Index: /trunk/FACT++/src/feedback.cc
===================================================================
--- /trunk/FACT++/src/feedback.cc	(revision 14032)
+++ /trunk/FACT++/src/feedback.cc	(revision 14033)
@@ -118,4 +118,6 @@
         fTempOffset = (avgt-25)*4./70; // [V]
 
+        fCursorTemp++;
+
         return HandleCurrentControl();
     }
@@ -127,4 +129,6 @@
         if (GetCurrentState()==Feedback::State::kCalibrating && fBiasOffset>dUt-1.2)
         {
+            fCursorTemp = 0;
+
             ostringstream msg;
             msg << " (applied calibration offset " << fBiasOffset << "V exceeds temperature correction " << fTempOffset << "V - 1.2V.";
@@ -262,9 +266,9 @@
         fDimDeviation.Update(vec);
 
-        if (!fOutputEnabled || fDimBias.state()!=BIAS::State::kVoltageOn)
+        if (!fOutputEnabled) || fDimBias.state()!=BIAS::State::kVoltageOn)
             return GetCurrentState();
 
         // Trigger calibration
-        if (GetCurrentState()==Feedback::State::kCalibrating && fCursorTemp==1)
+        if (GetCurrentState()==Feedback::State::kCalibrating && fCursorTemp==2)
         {
             DimClient::sendCommandNB("BIAS_CONTROL/REQUEST_STATUS", NULL, 0);
@@ -297,6 +301,4 @@
         DimClient::sendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_OFFSET",
                                  vec.data()+BIAS::kNumChannels, BIAS::kNumChannels*sizeof(float));
-
-        fCursorTemp++;
 
         return GetCurrentState();
@@ -719,9 +721,10 @@
             AverageCurrents(evt);
 
-        if (curr==&fBiasA && fControlType==kCurrents && fTempOffset>-2)
+        if (curr==&fBiasA && fControlType==kCurrents &&
+            fCursorTemp>0 && fCursorCur>0)
         {
             // fCursorTemp: 1 2 3 4 5 6 7 8
             // fCursor%x:   1 1 1 2 2 2 3 3    // 9 steps in ~15s
-            if (fCursorTemp<9 && fCursorCur%((fCursorTemp+2)/3)==0)
+            if (fCursorTemp<3 && fCursorCur%(fCursorTemp/3+1)==0)
                 HandleCurrentControl();
         }
@@ -850,4 +853,8 @@
 
         fOutputEnabled = evt.GetBool();
+
+        if (fControlType==kCurrents)
+            if (fCursorTemp>1)
+                fCursorTemp = 1;
 
         return GetCurrentState();
