diff --git a/phosphor-power-supply/power_supply.cpp b/phosphor-power-supply/power_supply.cpp
index 5be801a..fbbcb14 100644
--- a/phosphor-power-supply/power_supply.cpp
+++ b/phosphor-power-supply/power_supply.cpp
@@ -276,6 +276,24 @@
     }
 }
 
+void PowerSupply::analyzeFanFault()
+{
+    if (statusWord & phosphor::pmbus::status_word::FAN_FAULT)
+    {
+        if (!fanFault)
+        {
+            log<level::ERR>(fmt::format("FANS fault/warning: "
+                                        "STATUS_WORD = {:#04x}, "
+                                        "STATUS_MFR_SPECIFIC = {:#02x}, "
+                                        "STATUS_FANS_1_2 = {:#02x}",
+                                        statusWord, statusMFR, statusFans12)
+                                .c_str());
+        }
+
+        fanFault = true;
+    }
+}
+
 void PowerSupply::analyzeTemperatureFault()
 {
     if (statusWord & phosphor::pmbus::status_word::TEMPERATURE_FAULT_WARN)
@@ -396,21 +414,7 @@
 
                 analyzeVoutUVFault();
 
-                if (statusWord & status_word::FAN_FAULT)
-                {
-                    if (!fanFault)
-                    {
-                        log<level::ERR>(
-                            fmt::format("FANS fault/warning: "
-                                        "STATUS_WORD = {:#04x}, "
-                                        "STATUS_MFR_SPECIFIC = {:#02x}, "
-                                        "STATUS_FANS_1_2 = {:#02x}",
-                                        statusWord, statusMFR, statusFans12)
-                                .c_str());
-                    }
-
-                    fanFault = true;
-                }
+                analyzeFanFault();
 
                 analyzeTemperatureFault();
 
diff --git a/phosphor-power-supply/power_supply.hpp b/phosphor-power-supply/power_supply.hpp
index 1e1e0fe..45c4959 100644
--- a/phosphor-power-supply/power_supply.hpp
+++ b/phosphor-power-supply/power_supply.hpp
@@ -529,6 +529,15 @@
     void analyzeVoutUVFault();
 
     /**
+     * @brief Examine STATUS_WORD for the fan fault/warning bit.
+     *
+     * If fanFault is not on, trace that the bit now came on, include
+     * STATUS_WORD, STATUS_MFR_SPECIFIC, and STATUS_FANS_1_2 values as well, to
+     * help with understanding what may have caused it to be set.
+     */
+    void analyzeFanFault();
+
+    /**
      * @brief Examine STATUS_WORD for temperature fault.
      */
     void analyzeTemperatureFault();
