diff -ru a/src/sysReg.c b/src/sysReg.c
--- a/src/sysReg.c	2026-02-21 17:37:33
+++ b/src/sysReg.c	2026-03-05 18:55:44
@@ -635,7 +635,12 @@
 
 void HardclockRead0(void) {
     if ((hardclock_csr & HARDCLOCK_ENABLE) && hardclock_counter) {
-        hardclock_counter -= Timing_GetTime() - hardclock_last_time;
+        uint64_t diff = Timing_GetTime() - hardclock_last_time;
+        if (diff > hardclock_counter) {
+            hardclock_counter = 0;
+        } else {
+            hardclock_counter -= diff;
+        }
         Log_Printf(LOG_WARN, "[Hardclock] Active counter read %d", hardclock_counter);
     }
     IoMem_WriteByte(IoAccessCurrentAddress, hardclock_counter >> 8);
