Index: trunk/FACT++/src/biasctrl.cc
===================================================================
--- trunk/FACT++/src/biasctrl.cc	(revision 18781)
+++ trunk/FACT++/src/biasctrl.cc	(revision 18798)
@@ -1494,4 +1494,22 @@
     }
 
+    bool HasOvercurrent() const
+    {
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fCurrent[ch]<0)
+                return true;
+
+        return false;
+    }
+
+    bool IsVoltageOff() const
+    {
+        for (int ch=0; ch<kNumChannels; ch++)
+            if (fPresent[ch/kNumChannelsPerBoard] && fDacActual[ch]!=0)
+                return false;
+
+        return true;
+    }
+
     State::states_t GetStatus()
     {
@@ -1508,13 +1526,8 @@
             return State::kRamping;
 
-        for (int ch=0; ch<kNumChannels; ch++)
-            if (fPresent[ch/kNumChannelsPerBoard] && fCurrent[ch]<0)
-                return State::kOverCurrent;
-
-        bool isoff = true;
-        for (int ch=0; ch<kNumChannels; ch++)
-            if (fPresent[ch/kNumChannelsPerBoard] && fDacActual[ch]!=0)
-                isoff = false;
-        if (isoff)
+        if (HasOvercurrent())
+            return State::kOverCurrent;
+
+        if (IsVoltageOff())
             return State::kVoltageOff;
 
@@ -1943,5 +1956,7 @@
         {
             // This needs to be repeated for the case that in between a different command was processed
-            fBias.RampAllDacs(0);
+            if (!fBias.IsVoltageOff())
+                fBias.RampAllDacs(0);
+
             return State::kLocked;
         }
