diff --git a/monitor/fan.cpp b/monitor/fan.cpp
index 0e2d835..9856242 100644
--- a/monitor/fan.cpp
+++ b/monitor/fan.cpp
@@ -73,7 +73,8 @@
             std::get<hasTargetField>(s), std::get<funcDelay>(def),
             std::get<targetInterfaceField>(s), std::get<factorField>(s),
             std::get<offsetField>(s), std::get<methodField>(def),
-            std::get<thresholdField>(s), std::get<timeoutField>(def),
+            std::get<thresholdField>(s), std::get<ignoreAboveMaxField>(s),
+            std::get<timeoutField>(def),
             std::get<nonfuncRotorErrDelayField>(def),
             std::get<countIntervalField>(def), event));
 
@@ -364,24 +365,30 @@
     auto actual = static_cast<uint64_t>(sensor.getInput());
     auto range = sensor.getRange(_deviation);
 
-    return ((actual < range.first) || (actual > range.second));
+    return ((actual < range.first) ||
+            (range.second && actual > range.second.value()));
 }
 
 void Fan::updateState(TachSensor& sensor)
 {
-    auto range = sensor.getRange(_deviation);
-
     if (!_system.isPowerOn())
     {
         return;
     }
 
+    auto range = sensor.getRange(_deviation);
+    std::string rangeMax = "NoMax";
+    if (range.second)
+    {
+        rangeMax = std::to_string(range.second.value());
+    }
+
     sensor.setFunctional(!sensor.functional());
     getLogger().log(
         fmt::format("Setting tach sensor {} functional state to {}. "
                     "[target = {}, input = {}, allowed range = ({} - {})]",
                     sensor.name(), sensor.functional(), sensor.getTarget(),
-                    sensor.getInput(), range.first, range.second));
+                    sensor.getInput(), range.first, rangeMax));
 
     // A zero value for _numSensorFailsForNonFunc means we aren't dealing
     // with fan FRU functional status, only sensor functional status.
