I have read a couple of ways. One way I read was keeping a log of all turns and movements ect. with their time client side. Then run the commands stepping forward in time since the last state information was received from the server(accounting for lag). This way your character can not continue to get further and further out of sync.
I do not know how this will perform with different pings. Maybe you can have interp between the last estimation and new estimation to smooth it out a little bit. Though the way some games behave when I get some lag I do not think they use Interp.
Edit:
by turns and movements I mean the commands that cause them like "+foward" and "-foward" in quakeworld. This way it is relative to the latest updated position state, or whatever other states that are important.