static long timeJumpDetector_lastTimeJump; // in sys time static long timeJumpDetector_lastTimeJumpLength; sbool timeJumpDetector_verbose; static void timeJumpDetector() { doEvery(1000, new Runnable { long diff = now()-sysNow(); long lastSysNow = sysNow(); public void run() { long sysNow = sysNow(); long newDiff = now()-sysNow; long d = newDiff-diff; if (timeJumpDetector_verbose) print("timeJumpDetector: sysNow=" + sysNow + ", diff=" + newDiff); if (abs(d) <= 100 && isWindows() && sysNow-lastSysNow >= 10000) d = sysNow-lastSysNow-10000; if (abs(d) > 100) { timeJumpDetector_lastTimeJump = sysNow(); timeJumpDetector_lastTimeJumpLength = d; print("Time jump occurred! (" + formatDouble(toSeconds(d), 1) + " seconds)"); } diff = newDiff; lastSysNow = sysNow; } }); }