Hello, need help, i've managed to know rotation_degress and segment where wheel stops AFTER stopping, but BEFORE stopping is problem, need formula.

extends Control
signal started
signal stopped
@onready var wheel := $Front as TextureRect
@export var direction := 0
@export var speed_max := 360.0
@export var accel := 1.0
@export var threshold := 2.0
var speed := 0.0
func spin() -> void:
direction = -1
set_process(true)
func stop() -> void:
direction = 0
var d := speed / 1.0
var r := wheel.rotation_degrees + d * -1
printt("pred:", get_value(r), r)
func get_value(degrees: float) -> int:
var segments := 8
var d := 360 / segments
var r := 360 / segments / 2 # fix segment offset (center)
return int(fposmod(-1 * degrees + r, 360) / d) + 1
func _ready() -> void:
set_process(false)
func _process(delta: float) -> void:
speed = lerp(speed, speed_max * direction, accel * delta)
wheel.rotation_degrees += speed * delta
if speed > -threshold:
set_process(false)
printt("stop:", get_value($Front.rotation_degrees), $Front.rotation_degrees)
func _input(event: InputEvent) -> void:
if event is InputEventMouseButton:
if event.pressed:
if is_processing():
stop()
else:
spin()