Custom rotation on moving humanoids

Yes AutoRotate is turned off.

Basically i want to switch out AutoRotate to my own rotation system.

Here’s the function that i’m currently using

--self:SetCFrame() / self:GetCFrame() sets / gets the CFrame of the HumanoidRootPart.
function self:RotateTorsoTowards(position,alpha)
	alpha = alpha or 1
	local lookAt = CFrame.lookAt(self:GetCFrame().p,position)
	local cframe = self:GetCFrame()
	self:SetCFrame(cframe:Lerp(CFrame.fromMatrix(cframe.p,lookAt.XVector,cframe.YVector),alpha))
end

This works great when the humanoid is standing still. Not very good when the humanoid is moving. It begins to lag and stagger behind.

This is it moving without rotating.