diff --git a/include/sensor.hpp b/include/sensor.hpp
index 2f746da..a19b969 100644
--- a/include/sensor.hpp
+++ b/include/sensor.hpp
@@ -3,6 +3,7 @@
 #include <Thresholds.hpp>
 #include <sdbusplus/asio/object_server.hpp>
 
+constexpr size_t sensorFailedPollTimeMs = 5000;
 struct Sensor
 {
     virtual ~Sensor() = default;
diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index 98201b1..236dd81 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -89,6 +89,7 @@
     {
         return; // we're being destroyed
     }
+    size_t pollTime = CPUSensor::sensorPollMs;
     std::istream responseStream(&readBuf);
     if (!err)
     {
@@ -112,6 +113,7 @@
     }
     else
     {
+        pollTime = sensorFailedPollTimeMs;
         errCount++;
     }
 
@@ -129,8 +131,7 @@
         else
         {
             errCount = 0; // check power again in 10 cycles
-            sensorInterface->set_property(
-                "Value", std::numeric_limits<double>::quiet_NaN());
+            updateValue(std::numeric_limits<double>::quiet_NaN());
         }
     }
 
@@ -142,8 +143,7 @@
         return; // we're no longer valid
     }
     inputDev.assign(fd);
-    waitTimer.expires_from_now(
-        boost::posix_time::milliseconds(CPUSensor::sensorPollMs));
+    waitTimer.expires_from_now(boost::posix_time::milliseconds(pollTime));
     waitTimer.async_wait([&](const boost::system::error_code &ec) {
         if (ec == boost::asio::error::operation_aborted)
         {
diff --git a/src/TachSensor.cpp b/src/TachSensor.cpp
index f7c6fc0..4398f61 100644
--- a/src/TachSensor.cpp
+++ b/src/TachSensor.cpp
@@ -94,13 +94,14 @@
         return; // we're being destroyed
     }
     bool missing = false;
+    size_t pollTime = pwmPollMs;
     if (presence)
     {
         if (!presence->getValue())
         {
-            sensorInterface->set_property(
-                "Value", std::numeric_limits<double>::quiet_NaN());
+            updateValue(std::numeric_limits<double>::quiet_NaN());
             missing = true;
+            pollTime = sensorFailedPollTimeMs;
         }
     }
     std::istream responseStream(&readBuf);
@@ -127,7 +128,7 @@
         }
         else
         {
-
+            pollTime = sensorFailedPollTimeMs;
             errCount++;
         }
         // only send value update once
@@ -143,8 +144,7 @@
             else
             {
                 errCount = 0; // check power again in 10 cycles
-                sensorInterface->set_property(
-                    "Value", std::numeric_limits<double>::quiet_NaN());
+                updateValue(std::numeric_limits<double>::quiet_NaN());
             }
         }
     }
@@ -156,11 +156,6 @@
         return; // we're no longer valid
     }
     inputDev.assign(fd);
-    size_t pollTime = pwmPollMs;
-    if (missing)
-    {
-        pollTime *= 10;
-    }
     waitTimer.expires_from_now(boost::posix_time::milliseconds(pollTime));
     waitTimer.async_wait([&](const boost::system::error_code &ec) {
         if (ec == boost::asio::error::operation_aborted)
