Index: trunk/FACT++/src/HeadersRateControl.h
===================================================================
--- trunk/FACT++/src/HeadersRateControl.h	(revision 14990)
+++ trunk/FACT++/src/HeadersRateControl.h	(revision 14991)
@@ -18,5 +18,12 @@
             kInProgress,
         };
-    }
+    };
+
+    struct DimThreshold
+    {
+        uint16_t threshold;
+        double   begin;
+        double   end;
+    }  __attribute__((__packed__));
 }
 
Index: trunk/FACT++/src/ratecontrol.cc
===================================================================
--- trunk/FACT++/src/ratecontrol.cc	(revision 14990)
+++ trunk/FACT++/src/ratecontrol.cc	(revision 14991)
@@ -52,4 +52,6 @@
 
     uint64_t fCounter;
+
+    Time fCalibrationTimeStart;
 
     bool CheckEventSize(const EventImp &evt, size_t size)
@@ -283,5 +285,14 @@
         {
             fThresholds.assign(160, fThresholdMin);
-            fDimThreshold.Update(fThresholdMin);
+
+            const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+            fDimThreshold.setQuality(0);
+            fDimThreshold.Update(data);
+
+            ostringstream out;
+            out << setprecision(3);
+            out << "Measured rate " << fTriggerRate << "Hz below target rate " << fTargetRate << "... mininum threshold set to " << fThresholdMin;
+            Info(out);
+
             return RateControl::State::kGlobalThresholdSet;
         }
@@ -294,5 +305,13 @@
         if (diff<=fThresholdMin)
         {
-            fDimThreshold.Update(fThresholdMin);
+            const RateControl::DimThreshold data = { fThresholdMin, fCalibrationTimeStart.Mjd(), Time().Mjd() };
+            fDimThreshold.setQuality(1);
+            fDimThreshold.Update(data);
+
+            ostringstream out;
+            out << setprecision(3);
+            out << "Next step would be 0... mininum threshold set to " << fThresholdMin;
+            Info(out);
+
             return RateControl::State::kGlobalThresholdSet;
         }
@@ -368,4 +387,6 @@
         fTriggerRate  = -1;
         fCounter      = 0;
+
+        fCalibrationTimeStart = Time();
 
         ostringstream out;
@@ -455,5 +476,10 @@
         fDimFTM("FTM_CONTROL"),
         fDimRS("RATE_SCAN"),
-        fDimThreshold("RATE_CONTROL/THRESHOLD", "S:1", "Resulting threshold after calibration|threshold[dac]:Resulting threshold from calibration")
+
+        fDimThreshold("RATE_CONTROL/THRESHOLD", "S:1;D:1;D:1",
+                      "Resulting threshold after calibration"
+                      "|threshold[dac]:Resulting threshold from calibration"
+                      "|begin[mjd]:Start time of calibration"
+                      "|end[mjd]:End time of calibration")
     {
         // ba::io_service::work is a kind of keep_alive for the loop.
