What I am trying to achieve is a part that floats right in front of the player in first person, so far it works fine. However when I try to implement rotation the part does not rotate how you think it would, that being 45 degrees at a time, rather it seemingly randomly rotates either 45, 90 or even 180 degrees when I click R. What's going on?

local partYRad = 0
	
	repeat wait()
		newPart.PrimaryPart.CanCollide = true
		newPart.PrimaryPart.Transparency = 0.05
		local tweenInfo = TweenInfo.new(0.1, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut)
		local tween = ts:Create(newPart.PrimaryPart, tweenInfo, {CFrame = CFrame.new(cam.CFrame.LookVector * 7.5 + char.HumanoidRootPart.Position + Vector3.new(0, 2, 0)) * CFrame.Angles(0, partYRad, 0)})
		tween:Cancel()
		tween:Play()
		uis.InputBegan:Connect(function(input)
			if input.KeyCode == Enum.KeyCode.R then
				partYRad = partYRad + 45
			end
		end)
	until not placing