After tweaking the script and setting time_smooth to 0.99 I get almost constant difference in position.
It looks like its not the engine thats causing the difference, but my script.


This is the update counter for each player (separately)
Code:
if(my.movement_input != 0 || vec_dist( my.x , my.last_sent_position_x ) > 32)
		{
			if(my.update_time_passed >= 20)
			{
				predict_position( 200 );
				send_skill( my.predicted_current_x, SEND_VEC | SEND_ALL );
				vec_set( my.last_sent_position_x , my.predicted_current_x );
				my.update_time_passed = 0;
			}
			my.update_time_passed += time_step;
		}




And this is the update I send immediately after the player changes input (because first update will come after 200ms.)
Code:
if(my.old_movement_input != my.movement_input)
		{
			my.old_movement_input = my.movement_input;
			predict_position( my.latency );
			send_skill( my.predicted_current_x, SEND_VEC | SEND_ALL );
		}


my.latency is stored and send on each client to the server upon connecting.


Any toughts what is causing the constant difference?
The first update I send with event is off by 8.x quants. The others are 18.8x quants. (I think its ahead of my actual player,btw. Cant see that fast)


Extensive Multiplayer tutorial:
http://mesetts.com/index.php?page=201