diff --git a/src/CPUSensor.cpp b/src/CPUSensor.cpp
index 0920754..7654fde 100644
--- a/src/CPUSensor.cpp
+++ b/src/CPUSensor.cpp
@@ -33,12 +33,12 @@
                      boost::asio::io_service& io, const std::string& sensorName,
                      std::vector<thresholds::Threshold>&& _thresholds,
                      const std::string& sensorConfiguration, int cpuId,
-                     bool show) :
+                     bool show, double dtsOffset) :
     Sensor(boost::replace_all_copy(sensorName, " ", "_"),
            std::move(_thresholds), sensorConfiguration, objectType, maxReading,
            minReading),
     objServer(objectServer), inputDev(io, open(path.c_str(), O_RDONLY)),
-    path(path), waitTimer(io), show(show),
+    path(path), waitTimer(io), show(show), dtsOffset(dtsOffset),
     privTcontrol(std::numeric_limits<double>::quiet_NaN()), errCount(0)
 {
     nameTcontrol = labelTcontrol;
@@ -132,7 +132,8 @@
                 {
                     std::vector<thresholds::Threshold> newThresholds;
                     if (parseThresholdsFromAttr(newThresholds, path,
-                                                CPUSensor::sensorScaleFactor))
+                                                CPUSensor::sensorScaleFactor,
+                                                dtsOffset))
                     {
                         if (!std::equal(thresholds.begin(), thresholds.end(),
                                         newThresholds.begin(),
diff --git a/src/CPUSensorMain.cpp b/src/CPUSensorMain.cpp
index 44c5178..2f2319d 100644
--- a/src/CPUSensorMain.cpp
+++ b/src/CPUSensorMain.cpp
@@ -289,6 +289,22 @@
                 }
             }
 
+            /*
+             * Find if there is DtsCritOffset is configured in config file
+             * set it if configured or else set it to 0
+             */
+            double dtsOffset = 0;
+            if (label == "DTS")
+            {
+                auto findThrOffset =
+                    baseConfiguration->second.find("DtsCritOffset");
+                if (findThrOffset != baseConfiguration->second.end())
+                {
+                    dtsOffset = std::visit(VariantToDoubleVisitor(),
+                                           findThrOffset->second);
+                }
+            }
+
             std::vector<thresholds::Threshold> sensorThresholds;
             std::string labelHead = label.substr(0, label.find(" "));
             parseThresholdsFromConfig(*sensorData, sensorThresholds,
@@ -296,7 +312,8 @@
             if (sensorThresholds.empty())
             {
                 if (!parseThresholdsFromAttr(sensorThresholds, inputPathStr,
-                                             CPUSensor::sensorScaleFactor))
+                                             CPUSensor::sensorScaleFactor,
+                                             dtsOffset))
                 {
                     std::cerr << "error populating thresholds for "
                               << sensorName << "\n";
@@ -305,7 +322,7 @@
             gCpuSensors[sensorName] = std::make_unique<CPUSensor>(
                 inputPathStr, sensorType, objectServer, dbusConnection, io,
                 sensorName, std::move(sensorThresholds), *interfacePath, cpuId,
-                show);
+                show, dtsOffset);
             createdSensors.insert(sensorName);
             if (DEBUG)
             {
diff --git a/src/Thresholds.cpp b/src/Thresholds.cpp
index a15da17..3dd444d 100644
--- a/src/Thresholds.cpp
+++ b/src/Thresholds.cpp
@@ -330,7 +330,8 @@
 
 bool parseThresholdsFromAttr(
     std::vector<thresholds::Threshold>& thresholdVector,
-    const std::string& inputPath, const double& scaleFactor)
+    const std::string& inputPath, const double& scaleFactor,
+    const double& offset)
 {
     for (auto& type : attrTypes)
     {
@@ -364,6 +365,11 @@
             direction = Direction::HIGH;
         }
 
+        if (type == "crit")
+        {
+            val += offset;
+        }
+
         if (DEBUG)
         {
             std::cout << "Threshold: " << attrPath << ": " << val << "\n";
