Lerping a clamped number resulting in spinning

NVM, feels like an XY problem:

Relooking at your GIF you just need to rotate the camera towards a target position, you can just use CFrame from axis angles for that.

local target = workspace.Rig.Head

local function AngleBetween(vectorA, vectorB)
	return math.acos(math.clamp(vectorA:Dot(vectorB), -1, 1))
end

local camera = workspace.CurrentCamera

while true do
	local dt = task.wait()
	local currentLookVector = camera.CFrame.LookVector
	local targetLookVector = (target.Position-camera.CFrame.Position).Unit
	
	local angleTowardsTarget = AngleBetween(currentLookVector, targetLookVector)
	
	local rotationAngleTowardsTarget = math.min(angleTowardsTarget, dt*1) --Rotate 1 radian per second towards target, or the minimum distance to complete goal (prevent overshoot)
	
	local axis = currentLookVector:Cross(targetLookVector)
	camera.CFrame = CFrame.fromAxisAngle(axis, rotationAngleTowardsTarget)*camera.CFrame
end