Index: timecall.c
===================================================================
--- timecall.c	(revision 1061)
+++ timecall.c	(revision 1062)
@@ -103,7 +103,7 @@
 #endif
 }
 
-unsigned long raydium_timecall_clock(void)
+unsigned long raydium_timecall_clock_internal(void)
 {
 #ifndef WIN32
 struct timeval tv;
@@ -135,6 +135,16 @@
  return raydium_timecall_devrtc_clock();
 }
 
+unsigned long raydium_timecall_clock(void)
+{
+long long now;
+
+now=raydium_timecall_clock_internal();
+now-=raydium_timecall_offset;
+
+return (unsigned long)now; // should deal with modulo :)
+}
+
 signed char raydium_timecall_devrtc_rate_change(unsigned long new)
 {
 #ifndef APPLE
@@ -343,6 +353,7 @@
     raydium_timecall_interval[i]=0;
     raydium_timecall_next[i]=0;
     }
+raydium_timecall_offset=0;
 raydium_log("timecall: OK (%lu Hz)",raydium_timecall_max_frequency);
 raydium_timecall_add(raydium_timecall_raydium,-1);
 }
@@ -446,3 +457,17 @@
     }
  }
 }
+
+void raydium_timecall_stop(void)
+{
+raydium_timecall_stopped_stamp=raydium_timecall_clock();
+}
+
+void raydium_timecall_start(void)
+{
+long long offset;
+
+offset=raydium_timecall_clock()-raydium_timecall_stopped_stamp;
+if(offset<0) offset=0; // time modulo !
+raydium_timecall_offset+=(unsigned long)offset;
+}