Recoil recovery system almost works but still buggy

Im working on a recoil recovery system, but the problem is that it keeps overshooting my original camera angle even though it should be clamped.

function onRenderStepped(deltaTime: number)
    local x, y, z = currentCamera.CFrame:ToEulerAnglesXYZ()
    
    local spreadRange = currentStats:GetAttribute("SpreadRange")
    spread = math.clamp(spread - currentStats:GetAttribute("SpreadDecrease"), spreadRange.Min, spreadRange.Max)
    
    if spread <= spreadRange.Min then
        lastCameraAngleVector = Vector3.new(x, y, z)
    else
        currentCamera.CFrame = currentCamera.CFrame:Lerp(
            currentCamera.CFrame * CFrame.Angles(math.clamp(math.rad(lastCameraAngleVector.X), math.rad(lastCameraAngleVector.X), math.huge), 0, 0), 
            x/lastCameraAngleVector.X
        )
    end
end