diff --git a/src/ExitAirTempSensor.cpp b/src/ExitAirTempSensor.cpp
index 445a952..82b75eb 100644
--- a/src/ExitAirTempSensor.cpp
+++ b/src/ExitAirTempSensor.cpp
@@ -688,7 +688,7 @@
 
 bool ExitAirTempSensor::calculate(double& val)
 {
-    constexpr size_t maxErrorPrint = 1;
+    constexpr size_t maxErrorPrint = 5;
     static bool firstRead = false;
     static size_t errorPrint = maxErrorPrint;
 
@@ -699,6 +699,23 @@
         return false;
     }
 
+    // Though cfm is not expected to be less than qMin normally,
+    // it is not a hard limit for exit air temp calculation.
+    // 50% qMin is chosen as a generic limit between providing
+    // a valid derived exit air temp and reporting exit air temp not available.
+    constexpr const double cfmLimitFactor = 0.5;
+    if (cfm < (qMin * cfmLimitFactor))
+    {
+        if (errorPrint > 0)
+        {
+            errorPrint--;
+            std::cerr << "cfm " << cfm << " is too low, expected qMin " << qMin
+                      << "\n";
+        }
+        val = 0;
+        return false;
+    }
+
     // if there is an error getting inlet temp, return error
     if (std::isnan(inletTemp))
     {
@@ -795,7 +812,7 @@
         alpha = alphaS + ((alphaF - alphaS) * (cfm - qMin) / (qMax - qMin));
     }
 
-    auto time = std::chrono::system_clock::now();
+    auto time = std::chrono::steady_clock::now();
     if (!firstRead)
     {
         firstRead = true;
@@ -923,13 +940,9 @@
                         sensor->c2 =
                             loadVariant<double>(entry.second, "C2") / 100;
                         sensor->tachMinPercent =
-                            loadVariant<double>(entry.second,
-                                                "TachMinPercent") /
-                            100;
+                            loadVariant<double>(entry.second, "TachMinPercent");
                         sensor->tachMaxPercent =
-                            loadVariant<double>(entry.second,
-                                                "TachMaxPercent") /
-                            100;
+                            loadVariant<double>(entry.second, "TachMaxPercent");
                         sensor->createMaxCFMIface();
                         sensor->setupMatches();
 
