diff --git a/src/IntelCPUSensor.cpp b/src/IntelCPUSensor.cpp
index 2bebcd8..e10b8ea 100644
--- a/src/IntelCPUSensor.cpp
+++ b/src/IntelCPUSensor.cpp
@@ -288,7 +288,7 @@
                     std::vector<thresholds::Threshold> newThresholds;
                     if (parseThresholdsFromAttr(
                             newThresholds, path,
-                            IntelCPUSensor::sensorScaleFactor, dtsOffset))
+                            IntelCPUSensor::sensorScaleFactor, dtsOffset, 0))
                     {
                         if (!std::equal(thresholds.begin(), thresholds.end(),
                                         newThresholds.begin(),
diff --git a/src/IntelCPUSensorMain.cpp b/src/IntelCPUSensorMain.cpp
index 005ed7e..b9ee586 100644
--- a/src/IntelCPUSensorMain.cpp
+++ b/src/IntelCPUSensorMain.cpp
@@ -362,7 +362,7 @@
             {
                 if (!parseThresholdsFromAttr(sensorThresholds, inputPathStr,
                                              IntelCPUSensor::sensorScaleFactor,
-                                             dtsOffset))
+                                             dtsOffset, 0))
                 {
                     std::cerr << "error populating thresholds for "
                               << sensorName << "\n";
diff --git a/src/Thresholds.cpp b/src/Thresholds.cpp
index 6829041..7a64d1e 100644
--- a/src/Thresholds.cpp
+++ b/src/Thresholds.cpp
@@ -475,7 +475,7 @@
 bool parseThresholdsFromAttr(
     std::vector<thresholds::Threshold>& thresholdVector,
     const std::string& inputPath, const double& scaleFactor,
-    const double& offset)
+    const double& offset, const double& hysteresis)
 {
     const boost::container::flat_map<
         std::string, std::vector<std::tuple<const char*, thresholds::Level,
@@ -516,7 +516,8 @@
                         std::cout << "Threshold: " << attrPath << ": " << *val
                                   << "\n";
                     }
-                    thresholdVector.emplace_back(level, direction, *val, 0);
+                    thresholdVector.emplace_back(level, direction, *val,
+                                                 hysteresis);
                 }
             }
         }
diff --git a/src/Thresholds.hpp b/src/Thresholds.hpp
index fa7ce0c..352c55c 100644
--- a/src/Thresholds.hpp
+++ b/src/Thresholds.hpp
@@ -119,10 +119,15 @@
     std::vector<thresholds::Threshold>& thresholdVector,
     const std::string* matchLabel = nullptr, const int* sensorIndex = nullptr);
 
+// Sensors touched by parseThresholdFromAttr() are forcibly updated with given
+// parameters, so callers are encouraged to specify a sane hysteresis value for
+// their HW. For reference, the hysteresis fomula used in Sensor.hpp is:
+//  hysteresis.trigger = (max_val - min_val) * 0.01
 bool parseThresholdsFromAttr(
     std::vector<thresholds::Threshold>& thresholdVector,
     const std::string& inputPath, const double& scaleFactor,
-    const double& offset = 0);
+    const double& offset = 0,
+    const double& hysteresis = std::numeric_limits<double>::quiet_NaN());
 
 struct ThresholdDefinition
 {
