diff --git a/src/Thresholds.cpp b/src/Thresholds.cpp
index adc1f68..986d183 100644
--- a/src/Thresholds.cpp
+++ b/src/Thresholds.cpp
@@ -352,16 +352,29 @@
     std::vector<ChangeParam> changes = checkThresholds(sensor, sensor->value);
     for (const auto& change : changes)
     {
-        if (change.asserted)
+        // When CPU is powered off, some volatges are expected to
+        // go below low thresholds. Filter these events with thresholdTimer.
+        // 1. always delay the assertion of low events to see if they are
+        //   caused by power off event.
+        // 2. conditional delay the de-assertion of low events if there is
+        //   an existing timer for assertion.
+        // 3. no delays for de-assert of low events if there is an existing
+        //   de-assert for low event. This means 2nd de-assert would happen
+        //   first and when timer expires for the previous one, no additional
+        //   signal will be logged.
+        // 4. no delays for all high events.
+        if (change.threshold.direction == thresholds::Direction::LOW)
         {
-            thresholdTimer.startTimer(change.threshold, change.assertValue);
+            if (change.asserted || thresholdTimer.hasActiveTimer(
+                                       change.threshold, !change.asserted))
+            {
+                thresholdTimer.startTimer(change.threshold, change.asserted,
+                                          change.assertValue);
+                continue;
+            }
         }
-        else
-        {
-            thresholdTimer.stopTimer(change.threshold);
-            assertThresholds(sensor, change.assertValue, change.threshold.level,
-                             change.threshold.direction, false);
-        }
+        assertThresholds(sensor, change.assertValue, change.threshold.level,
+                         change.threshold.direction, change.asserted);
     }
 }
 
