diff --git a/phosphor-power-supply/power_supply.cpp b/phosphor-power-supply/power_supply.cpp
index 1648bd3..7c8c646 100644
--- a/phosphor-power-supply/power_supply.cpp
+++ b/phosphor-power-supply/power_supply.cpp
@@ -9,7 +9,8 @@
 
 #include <xyz/openbmc_project/Common/Device/error.hpp>
 
-#include <chrono>  // sleep_for()
+#include <chrono> // sleep_for()
+#include <cmath>
 #include <cstdint> // uint8_t...
 #include <fstream>
 #include <thread> // sleep_for()
@@ -595,18 +596,39 @@
             // If voltage went from below minimum, and now is not, clear faults.
             // Note: getInputVoltage() has its own try/catch.
             int inputVoltageOld = inputVoltage;
-            double actualInputVoltage;
+            double actualInputVoltageOld = actualInputVoltage;
             getInputVoltage(actualInputVoltage, inputVoltage);
             if ((inputVoltageOld == in_input::VIN_VOLTAGE_0) &&
                 (inputVoltage != in_input::VIN_VOLTAGE_0))
             {
                 log<level::INFO>(
                     fmt::format(
-                        "{} READ_VIN back in range: inputVoltageOld = {} inputVoltage = {}",
-                        shortName, inputVoltageOld, inputVoltage)
+                        "{} READ_VIN back in range: actualInputVoltageOld = {} "
+                        "actualInputVoltage = {}",
+                        shortName, actualInputVoltageOld, actualInputVoltage)
                         .c_str());
                 clearFaults();
             }
+            else if (vinUVFault && (inputVoltage != in_input::VIN_VOLTAGE_0))
+            {
+                log<level::INFO>(
+                    fmt::format(
+                        "{} CLEAR_FAULTS: vinUVFault {} actualInputVoltage {}",
+                        shortName, vinUVFault, actualInputVoltage)
+                        .c_str());
+                // Do we have a VIN_UV fault latched that can now be cleared
+                // due to voltage back in range? Attempt to clear all
+                // faults, re-check faults on next call.
+                clearFaults();
+            }
+            else if (std::abs(actualInputVoltageOld - actualInputVoltage) > 1.0)
+            {
+                log<level::INFO>(
+                    fmt::format(
+                        "{} actualInputVoltageOld = {} actualInputVoltage = {}",
+                        shortName, actualInputVoltageOld, actualInputVoltage)
+                        .c_str());
+            }
 
             checkAvailability();
         }
