We've got 16 ticks per second regardless of the frame rate.
My "while(1)" loop method allows you to stop the process immediately using a break instruction. If I would use something like this

wait(-1);
time_passed += 1;

I would have to wait until the entire second passes; I can't interrupt the process earlier if I need to.

On the other hand, "time_passed += time_step / 16;" adds 1 to time_passed each second. A loop that runs until time_passed is greater than or equal to 3 will run for 3 seconds, and so on.

I hope that this explains what's happening; let me know if you need more info.