diff --git a/ATxCommon/Monitoring/Cpu.cs b/ATxCommon/Monitoring/Cpu.cs
index f4fd3d3d753fece3a2e15f63a0981dde2718a55a..c30332fd366d2b8d50959ea35e9ab82f4a3a4656 100644
--- a/ATxCommon/Monitoring/Cpu.cs
+++ b/ATxCommon/Monitoring/Cpu.cs
@@ -110,9 +110,15 @@ namespace ATxCommon.Monitoring
                 _loadReadings[3] = _cpuCounter.NextValue();
                 _load = _loadReadings.Average();
                 if (_loadReadings[3] > _limit) {
-                    Log.Debug("CPU load ({0}) violating limit ({1})!", _loadReadings[3], _limit);
-                    _behaving = 0;
-                    // TODO: fire callback for violating load limit
+                    if (_behaving > _probation) {
+                        // this means the load was considered as "low" before
+                        // TODO: fire callback for violating load limit
+                        Log.Debug("CPU load ({0}) violating limit ({1})!", _loadReadings[3], _limit);
+                    } else if (_behaving > 0) {
+                        // this means we were still in probation, so no need to trigger again...
+                        Log.Debug("Resetting behaving counter to 0 (was {0}).", _behaving);
+                    }
+                  _behaving = 0;
                 } else {
                     _behaving++;
                     if (_behaving == _probation) {