As Pingzete said you need to check game lag compensation.
It has checks to return lag compensation -
If difference between two origins is more then 4096 -> we are breaking lagcomp:
Vector delta = record->m_vecOrigin - prevOrg;
if ( delta.Length2DSqr() > m_flTeleportDistanceSqr )
{
// lost track, too much difference
return;
}
You can achieve it with high fakelag amount
Second way - shift tickbase:
// did we find a context smaller than target time ?
if ( record->m_flSimulationTime <= flTargetTime )
break; // hurra, stop
You need to shift at least 5 ticks to achieve this check