Index: trunk/FACT++/src/biasctrl.cc
===================================================================
--- trunk/FACT++/src/biasctrl.cc	(revision 13454)
+++ trunk/FACT++/src/biasctrl.cc	(revision 13455)
@@ -69,9 +69,9 @@
     vector<int16_t>  fCurrent;     // Current in ADC units (12bit = 5mA)
 
-    virtual void UpdateA()
-    {
-    }
-
-    virtual void UpdateV()
+    virtual void UpdateAV()
+    {
+    }
+
+    virtual void UpdateV(const Time = Time())
     {
     }
@@ -373,8 +373,5 @@
         // Check if new values have been received
         if (cmd==kCmdRead || cmd==kCmdChannelSet || cmd==kExpertChannelSet)
-        {
-            UpdateV();
-            UpdateA();
-        }
+            UpdateAV();
 
         // ----- Take action depending on what is going on -----
@@ -1492,14 +1489,22 @@
     DimDescribedService fDimGapd;
 
-    void UpdateA()
-    {
+    void UpdateAV()
+    {
+        const Time now;
+        fDimCurrent.setTime(now);
         fDimCurrent.Update(fCurrent);
-    }
-
-    void UpdateV()
-    {
+
+        UpdateV(now);
+    }
+
+    void UpdateV(const Time now=Time())
+    {
+        const bool rc = !memcmp(fDacActual.data(), fDacTarget.data(), kNumChannels*2);
+
         vector<uint16_t> val(2*kNumChannels);
         memcpy(val.data(),              fDacActual.data(), kNumChannels*2);
         memcpy(val.data()+kNumChannels, fDacTarget.data(), kNumChannels*2);
+        fDimDac.setTime(now);
+        fDimDac.setQuality(rc);
         fDimDac.Update(val);
 
@@ -1507,4 +1512,6 @@
         for (float ch=0; ch<kNumChannels; ch++)
             volt[ch] = fDacActual[ch]*90./4096 - fChannelCalibration[ch];
+        fDimVolt.setTime(now);
+        fDimVolt.setQuality(rc);
         fDimVolt.Update(volt);
     }
