diff --git a/pid/pidloop.cpp b/pid/pidloop.cpp
index aba2b6e..0ccf35c 100644
--- a/pid/pidloop.cpp
+++ b/pid/pidloop.cpp
@@ -53,6 +53,8 @@
     if (*isCanceling)
         return;
 
+    std::chrono::steady_clock::time_point nextTime;
+
     if (first)
     {
         if (loggingEnabled)
@@ -62,11 +64,22 @@
 
         zone->initializeCache();
         processThermals(zone);
+
+        nextTime = std::chrono::steady_clock::now();
+    }
+    else
+    {
+        nextTime = timer->expiry();
     }
 
-    timer->expires_after(
-        std::chrono::milliseconds(zone->getCycleIntervalTime()));
-    timer->async_wait([zone, timer, cycleCnt, isCanceling](
+    uint64_t msPerFanCycle = zone->getCycleIntervalTime();
+
+    // Push forward the original expiration time of timer, instead of just
+    // resetting it with expires_after() from now, to make sure the interval
+    // is of the expected duration, and not stretched out by CPU time taken.
+    nextTime += std::chrono::milliseconds(msPerFanCycle);
+    timer->expires_at(nextTime);
+    timer->async_wait([zone, timer, cycleCnt, isCanceling, msPerFanCycle](
                           const boost::system::error_code& ec) mutable {
         if (ec == boost::asio::error::operation_aborted)
         {
@@ -110,9 +123,15 @@
         // Get the latest fan speeds.
         zone->updateFanTelemetry();
 
-        if (zone->getUpdateThermalsCycle() <= cycleCnt)
+        uint64_t msPerThermalCycle = zone->getUpdateThermalsCycle();
+
+        // Process thermal cycles at a rate that is less often than fan
+        // cycles. If thermal time is not an exact multiple of fan time,
+        // there will be some remainder left over, to keep the timing
+        // correct, as the intervals are staggered into one another.
+        if (cycleCnt >= msPerThermalCycle)
         {
-            cycleCnt = 0;
+            cycleCnt -= msPerThermalCycle;
 
             processThermals(zone);
         }
@@ -127,7 +146,9 @@
             zone->writeLog(out.str());
         }
 
-        cycleCnt += 1;
+        // Count how many milliseconds have elapsed, so we can know when
+        // to perform thermal cycles, in proper ratio with fan cycles.
+        cycleCnt += msPerFanCycle;
 
         pidControlLoop(zone, timer, isCanceling, false, cycleCnt);
     });
