diff --git a/power-supply/power_supply.cpp b/power-supply/power_supply.cpp
index b3d556c..d9e870c 100644
--- a/power-supply/power_supply.cpp
+++ b/power-supply/power_supply.cpp
@@ -109,6 +109,7 @@
                 checkPGOrUnitOffFault(statusWord);
                 checkCurrentOutOverCurrentFault(statusWord);
                 checkOutputOvervoltageFault(statusWord);
+                checkFanFault(statusWord);
             }
         }
     }
@@ -143,6 +144,7 @@
             inputFault = false;
             outputOCFault = false;
             outputOVFault = false;
+            fanFault = false;
         }
     }
 
@@ -194,6 +196,7 @@
             powerOnFault = false;
             outputOCFault = false;
             outputOVFault = false;
+            fanFault = false;
             powerOnTimer.start(powerOnInterval, Timer::TimerType::oneshot);
         }
         else
@@ -418,6 +421,39 @@
     }
 }
 
+void PowerSupply::checkFanFault(const uint16_t statusWord)
+{
+    using namespace witherspoon::pmbus;
+
+    std::uint8_t statusMFR  = 0;
+    std::uint8_t statusTemperature = 0;
+    std::uint8_t statusFans12 = 0;
+
+    // Check for an output overcurrent fault.
+    if ((statusWord & status_word::FAN_FAULT) &&
+        !fanFault)
+    {
+        statusMFR = pmbusIntf.read(STATUS_MFR, Type::Debug);
+        statusTemperature = pmbusIntf.read(STATUS_TEMPERATURE, Type::Debug);
+        statusFans12 = pmbusIntf.read(STATUS_FANS_1_2, Type::Debug);
+
+        util::NamesValues nv;
+        nv.add("STATUS_WORD", statusWord);
+        nv.add("MFR_SPECIFIC", statusMFR);
+        nv.add("STATUS_TEMPERATURE", statusTemperature);
+        nv.add("STATUS_FANS_1_2", statusFans12);
+
+        using metadata = xyz::openbmc_project::Power::Fault::
+                PowerSupplyFanFault;
+
+        report<PowerSupplyFanFault>(
+                metadata::RAW_STATUS(nv.get().c_str()),
+                metadata::CALLOUT_INVENTORY_PATH(inventoryPath.c_str()));
+
+        fanFault = true;
+    }
+}
+
 void PowerSupply::clearFaults()
 {
     //TODO - Clear faults at pre-poweron. openbmc/openbmc#1736
diff --git a/power-supply/power_supply.hpp b/power-supply/power_supply.hpp
index 98c4c0b..a3cea2d 100644
--- a/power-supply/power_supply.hpp
+++ b/power-supply/power_supply.hpp
@@ -155,6 +155,11 @@
         bool outputOVFault = false;
 
         /**
+         * @brief Set to true when a fan fault or warning condition is detected
+         */
+        bool fanFault = false;
+
+        /**
          * @brief Callback for inventory property changes
          *
          * Process change of Present property for power supply.
@@ -225,6 +230,16 @@
          */
         void checkOutputOvervoltageFault(const uint16_t statusWord);
 
+        /**
+         * @brief Checks for a fan fault or warning condition.
+         *
+         * The high byte of STATUS_WORD is checked to see if the "FAN FAULT OR
+         * WARNING" bit is turned on. If it is on, log an error.
+         *
+         * @param[in] statusWord - 2 byte STATUS_WORD value read from sysfs
+         */
+        void checkFanFault(const uint16_t statusWord);
+
 };
 
 }
