Orientation not saving properly

I’m saving the position and orientation of the player, however whenever I join the player is rotated in usually a random direction and not the one I left in:

for _, v in pairs(chr:GetChildren()) do
		if v:IsA("Part") then
			v.Anchored = true
			v.CanCollide = false
		end
	end
	
	chr:MoveTo(player.Position.Value)
	chr.HumanoidRootPart.CFrame *= CFrame.Angles(0, player.Orientation.Value, 0)
	
	for _, v in pairs(chr:GetChildren()) do
		if v:IsA("Part") then
			v.Anchored = false
			if v.Name == "Head" or v.Name == "Torso" then
				v.CanCollide = true
			end
		end
	end
	
	RunService.Heartbeat:Connect(function()
		player.Position.Value = tostring(chr.Head.Position)
		player.Orientation.Value = chr.HumanoidRootPart.Orientation.Y
	end)