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();
         }
diff --git a/phosphor-power-supply/power_supply.hpp b/phosphor-power-supply/power_supply.hpp
index bc57a83..3cc7fcb 100644
--- a/phosphor-power-supply/power_supply.hpp
+++ b/phosphor-power-supply/power_supply.hpp
@@ -468,6 +468,10 @@
     /** @brief Will be updated with latest converted value read from READ_VIN */
     int inputVoltage = phosphor::pmbus::in_input::VIN_VOLTAGE_0;
 
+    /** @brief Will be updated with the actual voltage last read from READ_VIN
+     */
+    double actualInputVoltage = 0;
+
     /** @brief True if an error for a fault has already been logged. */
     bool faultLogged = false;
 
diff --git a/phosphor-power-supply/test/power_supply_tests.cpp b/phosphor-power-supply/test/power_supply_tests.cpp
index 8bcbf16..63f03db 100644
--- a/phosphor-power-supply/test/power_supply_tests.cpp
+++ b/phosphor-power-supply/test/power_supply_tests.cpp
@@ -1058,10 +1058,10 @@
     for (auto x = 1; x <= DEGLITCH_LIMIT; x++)
     {
         setPMBusExpectations(mockPMBus, expectations);
-        // Also get another read of READ_VIN.
+        // Also get another read of READ_VIN, faulted, so not in 100-volt range
         EXPECT_CALL(mockPMBus, readString(READ_VIN, _))
             .Times(1)
-            .WillOnce(Return("125790"));
+            .WillOnce(Return("19000"));
         if (x == DEGLITCH_LIMIT)
         {
             EXPECT_CALL(mockedUtil, setAvailable(_, _, false));
