diff --git a/src/HwmonTempMain.cpp b/src/HwmonTempMain.cpp
index 9b5e786..60a8fde 100644
--- a/src/HwmonTempMain.cpp
+++ b/src/HwmonTempMain.cpp
@@ -204,11 +204,15 @@
                         continue;
                     }
                 }
+
                 std::vector<thresholds::Threshold> sensorThresholds;
-                if (!parseThresholdsFromConfig(*sensorData, sensorThresholds))
+                int index = 1;
+
+                if (!parseThresholdsFromConfig(*sensorData, sensorThresholds,
+                                               nullptr, &index))
                 {
                     std::cerr << "error populating thresholds for "
-                              << sensorName << "\n";
+                              << sensorName << " index 1\n";
                 }
 
                 auto findPollRate = baseConfiguration->second.find("PollRate");
@@ -264,13 +268,28 @@
                         permitSet);
                     if (hwmonFile)
                     {
+                        // To look up thresholds for these additional sensors,
+                        // match on the Index property in the threshold data
+                        // where the index comes from the sysfs file we're on,
+                        // i.e. index = 2 for temp2_input.
+                        int index = i + 1;
+                        std::vector<thresholds::Threshold> thresholds;
+
+                        if (!parseThresholdsFromConfig(*sensorData, thresholds,
+                                                       nullptr, &index))
+                        {
+                            std::cerr << "error populating thresholds for "
+                                      << sensorName << " index " << index
+                                      << "\n";
+                        }
+
                         auto& sensor = sensors[sensorName];
                         sensor = nullptr;
                         sensor = std::make_shared<HwmonTempSensor>(
                             *hwmonFile, sensorType, objectServer,
                             dbusConnection, io, sensorName,
-                            std::vector<thresholds::Threshold>(), pollRate,
-                            *interfacePath, readState);
+                            std::move(thresholds), pollRate, *interfacePath,
+                            readState);
                         sensor->setupRead();
                     }
                 }
