diff --git a/power-supply/power_supply.cpp b/power-supply/power_supply.cpp
index a03eb74..f0c3089 100644
--- a/power-supply/power_supply.cpp
+++ b/power-supply/power_supply.cpp
@@ -434,25 +434,38 @@
 {
     using namespace witherspoon::pmbus;
 
-    // Check for a fan fault or warning condition
-    if ((statusWord & status_word::FAN_FAULT) &&
-        !fanFault)
+    if (fanFault < FAULT_COUNT)
     {
-        util::NamesValues nv;
-        nv.add("STATUS_WORD", statusWord);
-        captureCmd(nv, STATUS_MFR, Type::Debug);
-        captureCmd(nv, STATUS_TEMPERATURE, Type::Debug);
-        captureCmd(nv, STATUS_FANS_1_2, Type::Debug);
+        // Check for a fan fault or warning condition
+        if (statusWord & status_word::FAN_FAULT)
+        {
+            fanFault++;
+        }
+        else
+        {
+            if (fanFault > 0)
+            {
+                fanFault = 0;
+            }
+        }
 
-        using metadata = org::open_power::Witherspoon::Fault::
-                PowerSupplyFanFault;
+        if (fanFault >= FAULT_COUNT)
+        {
+            util::NamesValues nv;
+            nv.add("STATUS_WORD", statusWord);
+            captureCmd(nv, STATUS_MFR, Type::Debug);
+            captureCmd(nv, STATUS_TEMPERATURE, Type::Debug);
+            captureCmd(nv, STATUS_FANS_1_2, Type::Debug);
 
-        report<PowerSupplyFanFault>(
-                metadata::RAW_STATUS(nv.get().c_str()),
-                metadata::CALLOUT_INVENTORY_PATH(inventoryPath.c_str()));
+            using metadata = org::open_power::Witherspoon::Fault::
+                    PowerSupplyFanFault;
 
-        faultFound = true;
-        fanFault = true;
+            report<PowerSupplyFanFault>(
+                    metadata::RAW_STATUS(nv.get().c_str()),
+                    metadata::CALLOUT_INVENTORY_PATH(inventoryPath.c_str()));
+
+            faultFound = true;
+        }
     }
 }
 
@@ -505,7 +518,7 @@
     powerOnFault = 0;
     outputOCFault = 0;
     outputOVFault = 0;
-    fanFault = false;
+    fanFault = 0;
     temperatureFault = false;
     faultFound = false;
 
