Changing humanoid animations works one way, changing IDs back to default does not

When the player touches certain invisible triggers, it fires a RemoteEvent that changes the humanoid’s walking, jumping and falling animations. The same LocalScript in StarterCharacter has two blocks; one for the RemoteEvent that changes the animations, and another RemoteEvent that reverts them back to the default R6 values. “R6_Fast” is for the custom animations, “R6_Slow” is for the default animations.

local guy = script.Parent
local SM = game.ReplicatedStorage.SharedModules

SM.R6_Fast.OnClientEvent:Connect(function(player)
	guy.Animate.walk.WalkAnim.AnimationId = "rbxassetid://532652626"
	guy.Animate.jump.JumpAnim.AnimationId = "rbxassetid://90975335880034"
	guy.Animate.fall.FallAnim.AnimationId = "rbxassetid://532653298"
end)

SM.R6_Slow.OnClientEvent:Connect(function(player)
	guy.Animate.walk.WalkAnim.AnimationId = "rbxassetid://180426354"
	guy.Animate.jump.JumpAnim.AnimationId = "rbxassetid://125750702"
	guy.Animate.fall.FallAnim.AnimationId = "rbxassetid://180436148"
end)

On the client, this works as intended; the animations update when the corresponding RemoteEvents are fired. On the server, players first swapping to the “Fast” animations still appear correct to other players.
However, once the RE to swap back to the “Slow” animations is triggered, players on the server see a funky bugged state that combines a keyframe from the last “Fast” animation with the current “Slow” animation.


pictured: the “Fast” fall animation combined with the “Slow” idle animation

I’ve tried handling this same animation swap with Workspace-based Server scripts and the results were the exact same. I’ve tried some hacky solutions, like temporarily disabling and enabling the Animate script hoping it might ‘refresh’ the animation state, but no luck.

At this point, any help is greatly appreciated!