Clients should detect when "too many" events from the server are being received late. In this case, it should wait in order to become one frame further behind the serve until the number of late events goes down to an acceptable level.
Conversely, if the client's own events are being received too late by the server (many time readjustments or rejected events) then the client should try to gain an event on the server by oversimulating for one frame.
The lower bound of this time offset would be the most negative offset which still allows a satisfactory number of the client's events to be received by the server without correction. The upper bound of this offset would be the maximum value which results in a satisfactory number of "late" events from the server.