diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp
index 12e9e60a4a..b02119494e 100644
--- a/src/core/core_timing.cpp
+++ b/src/core/core_timing.cpp
@@ -136,8 +136,11 @@ void CoreTiming::AddTicks(u64 ticks) {
 
 void CoreTiming::Idle() {
     if (!event_queue.empty()) {
-        u64 next_event_time = event_queue.front().time;
-        ticks = nsToCycles(std::chrono::nanoseconds(next_event_time)) + 10U;
+        const u64 next_event_time = event_queue.front().time;
+        const u64 next_ticks = nsToCycles(std::chrono::nanoseconds(next_event_time)) + 10U;
+        if (next_ticks > ticks) {
+            ticks = next_ticks;
+        }
         return;
     }
     ticks += 1000U;