When a new client joins in between sending frames, server will serialize a current live position to the client. This may not be the last sent copy to everyone, so when the next send happens, the delta sent will be delta-ed against wrong data.
Other changes:
1) Removed CheckLastSendTime() in OnSerialize(), not needed.
2) Only checking sending/set dirty in LateUpdate(). Other users may require positions updated in
update, and do something to it on LateUpdate().
3) Initialize last snapshot to zeroes in Reset(). For syncOnlyOnChange, sender will check against last sent
snapshot for changes. This needs to be zero on a reset.