Index: /trunk/FACT++/src/feedback.cc
===================================================================
--- /trunk/FACT++/src/feedback.cc	(revision 13973)
+++ /trunk/FACT++/src/feedback.cc	(revision 13974)
@@ -79,4 +79,5 @@
 
     double fBiasOffset;
+    double fTempOffset;
     double fCalibrationOffset;
     double fAppliedOffset;
@@ -115,10 +116,17 @@
         avgt /= numt; // [deg C]
 
-        const double dUt = (avgt-25)*4./70; // [V]
+        fTempOffset = (avgt-25)*4./70; // [V]
+
+        return HandleCurrentControl();
+    }
+
+    int HandleCurrentControl()
+    {
+        const double dUt = fTempOffset; // [V]
 
         if (GetCurrentState()==Feedback::State::kCalibrating && fBiasOffset>dUt-1.2)
         {
             ostringstream msg;
-            msg << " (applied calibration offset " << fBiasOffset << "V exceeds temperature correction " << avgt << "V - 1.2V.";
+            msg << " (applied calibration offset " << fBiasOffset << "V exceeds temperature correction " << fTempOffset << "V - 1.2V.";
             Warn("Trying to calibrate above G-APD breakdown volatge!");
             Warn(msg);
@@ -711,4 +719,7 @@
             AverageCurrents(evt);
 
+        if (fControlType==kCurrents && fTempOffset>-2 && fCursorTemp && fCursorCur%3==0)
+            HandleCurrentControl();
+
         return GetCurrentState();
     }
@@ -930,4 +941,5 @@
 
         fBiasOffset = evt.GetFloat();
+        fTempOffset = -3;
         ResetData(0);
         fControlType = kCurrents;
@@ -1135,5 +1147,5 @@
                 }
 
-                return fOutputEnabled ? Feedback::State::kCurrentCtrlRunning : Feedback::State::kCurrentCtrlIdle;
+                return fOutputEnabled && fCursorTemp>0 ? Feedback::State::kCurrentCtrlRunning : Feedback::State::kCurrentCtrlIdle;
             }
         }
