diff --git a/dbus-sdr/sdrutils.cpp b/dbus-sdr/sdrutils.cpp
index 9172d05..1eadb6f 100644
--- a/dbus-sdr/sdrutils.cpp
+++ b/dbus-sdr/sdrutils.cpp
@@ -66,6 +66,8 @@
     }
     subtree = sensorTreePtr;
     sensorUpdatedIndex++;
+    // The SDR is being regenerated, wipe the old stats
+    sdrStatsTable.wipeTable();
     return sensorUpdatedIndex;
 }
 
diff --git a/dbus-sdr/sensorcommands.cpp b/dbus-sdr/sensorcommands.cpp
index b706db2..42fb9de 100644
--- a/dbus-sdr/sensorcommands.cpp
+++ b/dbus-sdr/sensorcommands.cpp
@@ -341,6 +341,35 @@
             IPMISensorReadingByte2::readingStateUnavailable);
     }
 
+    if constexpr (details::enableInstrumentation)
+    {
+        int byteValue;
+        if (bSigned)
+        {
+            byteValue = static_cast<int>(static_cast<int8_t>(value));
+        }
+        else
+        {
+            byteValue = static_cast<int>(static_cast<uint8_t>(value));
+        }
+
+        // Keep stats on the reading just obtained, even if it is "NaN"
+        if (details::sdrStatsTable.updateReading(sensnum, reading, byteValue))
+        {
+            // This is the first reading, show the coefficients
+            double step = (max - min) / 255.0;
+            std::cerr << "IPMI sensor "
+                      << details::sdrStatsTable.getName(sensnum)
+                      << ": Range min=" << min << " max=" << max
+                      << ", step=" << step
+                      << ", Coefficients mValue=" << static_cast<int>(mValue)
+                      << " rExp=" << static_cast<int>(rExp)
+                      << " bValue=" << static_cast<int>(bValue)
+                      << " bExp=" << static_cast<int>(bExp)
+                      << " bSigned=" << static_cast<int>(bSigned) << "\n";
+        }
+    }
+
     uint8_t thresholds = 0;
 
     auto warningObject =
@@ -1187,6 +1216,9 @@
     std::strncpy(record.body.id_string, name.c_str(),
                  sizeof(record.body.id_string));
 
+    // Remember the sensor name, as determined for this sensor number
+    details::sdrStatsTable.updateName(sensornumber, name);
+
     IPMIThresholds thresholdData;
     try
     {
