Offsetting a part using CFrame

My goal is to offset the block by 0.2 studs from its current orientation. To test this, I move the part(hover) and the seat forward and then turn it. It is a part containing children: Seat, WeldConstraint (welding seat and part together), Script. When I run it, everything prints, however on the first iteration the part and seat seem to jump a significant amount away as well as be on top of the base plate although they were previously anchored in the air. They then don’t move anymore after the first iteration although the script keeps running and printing. I have absolutely no clue as to what is going on. This is the script in the part.

local hover = game.Workspace.Hover
local offsetCFrame =, 0, 0.2)
local i = 1
while true do
	i = i+1
	hover.CFrame = hover.CFrame:ToWorldSpace(offsetCFrame)
	local newc = CFrame.Angles(0, math.rad(90), 0)
	print("newc created")
	hover.CFrame = newc

I have located the problem to be the local newc = etc and hover.CFrame = newc
If I comment those lines out it works fine. But with them everything breaks and glitches. Anyone know why?

local rotatedCFrame = CFrame.Angles(0, math.rad(70), math.rad(20))
hover.CFrame = hover.CFrame:ToWorldSpace(rotatedCFrame)

For some reason this works. It doesn’t turn the seat as well though, just the part for some reason. If anyone knows why, a reply is greatly appreciated.