Index: /trunk/FACT++/src/feedback.cc
===================================================================
--- /trunk/FACT++/src/feedback.cc	(revision 13690)
+++ /trunk/FACT++/src/feedback.cc	(revision 13691)
@@ -182,7 +182,10 @@
             fAppliedOffset += dUt;
 
-        vector<float> vec(2*BIAS::kNumChannels);
+        vector<float> vec(2*BIAS::kNumChannels+2);
         for (int i=0; i<BIAS::kNumChannels; i++)
             vec[i+BIAS::kNumChannels] = fAppliedOffset;
+
+        vec[BIAS::kNumChannels*2]   = dUt;
+        vec[BIAS::kNumChannels*2+1] = fBiasOffset;
 
         double avg[2] = {   0,   0 };
@@ -255,8 +258,8 @@
                 // Offset induced by the voltage above the calibration point
                 const double dI = U0/Ravg[i]; // [V/Ohm]
-
+ 
                 // Offset at the calibration point (make sure that the calibration is
                 // valid (Im[i]>Iavg[i]) and we operate above the calibration point)
-                const double I = Im>Iavg[i] ? Im - Iavg[i] : 0; // [uA]
+                const double I = Im>Iavg[i] ? Im - Iavg[i] : 0; // [A]
 
                 // Make sure that the averaged resistor is valid
@@ -590,5 +593,5 @@
          */
 
-        vector<float> vec(2*BIAS::kNumChannels);
+        vector<float> vec(2*BIAS::kNumChannels+2);
         for (int i=0; i<BIAS::kNumChannels; i++)
             vec[i] = fPV[2][i]-fSP[i];
@@ -725,7 +728,9 @@
 
         vector<float> vec;
-        vec.reserve(2*nch);
+        vec.reserve(2*nch+2);
         vec.insert(vec.begin(),     nch, fPV[2][0]-fSP[0]);
         vec.insert(vec.begin()+nch, nch, correction[0]);
+        vec.push_back(0);
+        vec.push_back(0);
 
         fDimDeviation.setQuality(fControlType);
@@ -928,5 +933,6 @@
         fSP = valarray<double>(0., BIAS::kNumChannels);
 
-        vector<float> vec(2*BIAS::kNumChannels);
+        vector<float> vec(2*BIAS::kNumChannels+2);
+        vec[2*BIAS::kNumChannels+1] = fBiasOffset;
         fDimDeviation.setQuality(kIdle);
         fDimDeviation.Update(vec);
@@ -950,4 +956,5 @@
         WarnState(false, true);
 
+        fBiasOffset = 0;
         ResetData(evt.GetShort());
 
@@ -964,4 +971,5 @@
         WarnState(false, true);
 
+        fBiasOffset = 0;
         ResetData(evt.GetShort());
 
@@ -1004,7 +1012,6 @@
         WarnState(true, false);
 
+        fBiasOffset = evt.GetFloat();
         ResetData(0);
-
-        fBiasOffset = evt.GetFloat();
         fControlType = kCurrents;
 
@@ -1240,8 +1247,10 @@
                       "Amplitude reference value(s)"
                       "Vref[mV]:Amplitude reference"),
-        fDimDeviation("FEEDBACK/DEVIATION", "F:416;F:416",
+        fDimDeviation("FEEDBACK/DEVIATION", "F:416;F:416;F:1;F:1",
                       "Control loop information"
                       "|DeltaAmpl[mV]:Amplitude offset measures"
-                      "|DeltaBias[mV]:Correction value calculated"),
+                      "|DeltaBias[mV]:Correction value calculated"
+                      "|DeltaTemp[mV]:Correction calculated from temperature"
+                      "|DeltaUser[mV]:Additional offset specified by user"),
         fDimCalibration("FEEDBACK/CALIBRATION", "F:416;F:416;F:416",
                         "Current offsets"
