Reading from Humanoid.MoveDirection on the client and server on the same frame in a :BindToSimulation loop doesn’t return the same value. They are very close but are off by ~0.005, which is enough to cause mispredictions in certain scenarios where physics objects depend on it. If you continue walking in the same direction they never match up and stay only to the accuray of 3 decimal places.
Expected behavior
Just like other physics properties, Humanoid.MoveDirection should be synced on the client and server and not be off by a tiny fraction