When world origin rebasing, client side corrections will be broken

Moring team, for the past few days I have been having some problems with world origin rebasing in a multi player game.

So far everything works well, have changed max world size to 200Km, have setup a map with zones to rebase the client as needed, the server has all sub levels loaded at all times and the client just streams things in as needed, I also have a few space stations that rebase the world to their actor location, I have found that after around 160km things start to get a bit meh but this is fine as my world only covers 135km right now.

Anyway, the problem is that once I move to a zone that is far from zero I get many CMC corrections on the client, in the log I have found that the error rate is 0 most of the time and its just correcting my client pawn all the time for no need, I have tracked it down.

UCharacterMovementComponent::CallServerMove() line: 8200, we get the location of the pawn/base and send that to the server, this is never rebased to zero so we are sending a rebased location to the sever so the server always thinks we are in need of a correction. From what I can see we really just need to rebase to zero before we send the location to the server.

My fix was to change:

	const FVector SendLocation = MovementBaseUtility::UseRelativeLocation(ClientMovementBase) ? NewMove->SavedRelativeLocation : NewMove->SavedLocation;

To be:

	const FVector SendLocation = FRepMovement::RebaseOntoZeroOrigin(MovementBaseUtility::UseRelativeLocation(ClientMovementBase) ? NewMove->SavedRelativeLocation : NewMove->SavedLocation, GetWorld()->OriginLocation);

This seems to remove most of the corrections, I still get a few when I go up stairs or move really fast so im not to worried as this seems correct as im far from zero and im sure PhysX really wont enjoy me being that far from zero.

Can you guys see any problems with this fix? Was I just missed? I have only just come back to working on this project and im sure I didn’t have this problem in 4.19.

How would one fix this issue in newer unreal versions where CallServerMove() is deprecated and no longer used ?