Balancing mechanism overshoots target

The basics:
I wanted to make a physics based movement thing. It uses the built in AngularVelocity BodyMover.
It keeps the angular velocity at a specific value if the force acted on it is not large enough.

The balance:
I give a target CFrame and it gives the offset (in degrees) from the current body CFrame. Then i made a curve to make the speed less the closer it gets to the target.


Basically this curve.

The problem:
The character overshoots, oscillates and stabilises. If it decides to stabilise.

Possible solutions:
I was thinking of somehow including the base angular velocity of the object (the velocity it already rotates at) to compensate. But as to how? I don’t know.

The equation looks like this:

function Curve(Current) --this is applied to all of the offset axes (x,y,z)
	local Result = (Current^2)/360 --360 is just the max offset value (180 to -180 is but it works differently in practice)
	if Current == math.abs(Current) then --differentiate between backward and forward
		return Result
	else
		return -Result
	end
end

Any and all help is appreciated. Thank you in advance.

BodyGyro is not suitable for my use case.