time_t begintime = time(NULL);
 
     // advance the recent buffer if enough time has passed.
-    if (begintime - last_update_time)
-       myObjectRuntime.AdvanceBy((begintime - last_update_time)/time_quantum);
+    time_t delta = (begintime - last_rotate_time);
+    if (delta > time_quantum) {
+       myObjectRuntime.AdvanceBy(delta/time_quantum);
+       last_rotate_time = begintime - (delta % time_quantum);
+    }
 
     ... do some work