For an example of what I'm talking about, please look at that link.
So when I launch my game, it waits 10 seconds, and when it is meant to rotate (which it does), the position of the part goes mental.
My code
script.Parent.Parent.Status.Changed:connect(function()
if script.Parent.Parent.Status.Value == "Up" then
for i = 360, 1 do
script.Parent.Rotation = Vector3.new(0, i, 90)
wait()
end
elseif script.Parent.Parent.Status.Value == "Down" then
for i = 1, 360 do
script.Parent.Rotation = Vector3.new(0, i, 90)
wait()
end
end
end)
while wait() do
script.Parent.CFrame = script.Parent.Parent.WheelRPos.CFrame
end

1 comment
CFrame also contains rotation, so it's setting the rotation back when you do that CFrame while loop.