diff --git a/healthMonitor.cpp b/healthMonitor.cpp
index bddbb3f..9024048 100644
--- a/healthMonitor.cpp
+++ b/healthMonitor.cpp
@@ -312,7 +312,8 @@
 
 void HealthSensor::checkSensorThreshold(const double value)
 {
-    if (sensorConfig.criticalHigh && (value > sensorConfig.criticalHigh))
+    if (std::isfinite(sensorConfig.criticalHigh) &&
+        (value > sensorConfig.criticalHigh))
     {
         if (!CriticalInterface::criticalAlarmHigh())
         {
@@ -322,24 +323,22 @@
                     "ASSERT: sensor {SENSOR} is above the upper threshold critical high",
                     "SENSOR", sensorConfig.name);
         }
+        return;
     }
-    else
+
+    if (CriticalInterface::criticalAlarmHigh())
     {
-        if (CriticalInterface::criticalAlarmHigh())
-        {
-            CriticalInterface::criticalAlarmHigh(false);
-            if (sensorConfig.criticalLog)
-                info(
-                    "DEASSERT: sensor {SENSOR} is under the upper threshold critical high",
-                    "SENSOR", sensorConfig.name);
-        }
+        CriticalInterface::criticalAlarmHigh(false);
+        if (sensorConfig.criticalLog)
+            info(
+                "DEASSERT: sensor {SENSOR} is under the upper threshold critical high",
+                "SENSOR", sensorConfig.name);
+    }
 
-        /* if warning high value is not set then return */
-        if (!sensorConfig.warningHigh)
-            return;
-
-        if ((value > sensorConfig.warningHigh) &&
-            (!WarningInterface::warningAlarmHigh()))
+    if (std::isfinite(sensorConfig.warningHigh) &&
+        (value > sensorConfig.warningHigh))
+    {
+        if (!WarningInterface::warningAlarmHigh())
         {
             WarningInterface::warningAlarmHigh(true);
             if (sensorConfig.warningLog)
@@ -347,15 +346,16 @@
                     "ASSERT: sensor {SENSOR} is above the upper threshold warning high",
                     "SENSOR", sensorConfig.name);
         }
-        else if ((value <= sensorConfig.warningHigh) &&
-                 (WarningInterface::warningAlarmHigh()))
-        {
-            WarningInterface::warningAlarmHigh(false);
-            if (sensorConfig.warningLog)
-                info(
-                    "DEASSERT: sensor {SENSOR} is under the upper threshold warning high",
-                    "SENSOR", sensorConfig.name);
-        }
+        return;
+    }
+
+    if (WarningInterface::warningAlarmHigh())
+    {
+        WarningInterface::warningAlarmHigh(false);
+        if (sensorConfig.warningLog)
+            info(
+                "DEASSERT: sensor {SENSOR} is under the upper threshold warning high",
+                "SENSOR", sensorConfig.name);
     }
 }
 
diff --git a/healthMonitor.hpp b/healthMonitor.hpp
index 062c840..d327cf0 100644
--- a/healthMonitor.hpp
+++ b/healthMonitor.hpp
@@ -11,6 +11,7 @@
 #include <xyz/openbmc_project/Sensor/Value/server.hpp>
 
 #include <deque>
+#include <limits>
 #include <map>
 #include <string>
 
@@ -67,8 +68,8 @@
     std::string name;
     uint16_t freq;
     uint16_t windowSize;
-    double criticalHigh;
-    double warningHigh;
+    double criticalHigh = std::numeric_limits<double>::quiet_NaN();
+    double warningHigh = std::numeric_limits<double>::quiet_NaN();
     bool criticalLog;
     bool warningLog;
     std::string criticalTgt;
