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
     {
