Index: /trunk/FACT++/src/mcp.cc
===================================================================
--- /trunk/FACT++/src/mcp.cc	(revision 12427)
+++ /trunk/FACT++/src/mcp.cc	(revision 12428)
@@ -65,4 +65,5 @@
     pair<Time, int> fStatusFAD;
     pair<Time, int> fStatusLog;
+    pair<Time, int> fStatusRC;
 
     DimStampedInfo fDim;
@@ -70,4 +71,5 @@
     DimStampedInfo fFAD;
     DimStampedInfo fLog;
+    DimStampedInfo fRC;
 
     pair<Time, int> GetNewState(DimStampedInfo &info) const
@@ -104,4 +106,10 @@
         {
             fStatusLog = GetNewState(fLog);
+            return;
+        }
+
+        if (curr==&fRC)
+        {
+            fStatusRC = GetNewState(fRC);
             return;
         }
@@ -163,4 +171,5 @@
         PrintState(fStatusFAD, "FAD_CONTROL");
         PrintState(fStatusLog, "DATA_LOGGER");
+        PrintState(fStatusRC,  "RATE_CONTROL");
 
         return GetCurrentState();
@@ -308,4 +317,7 @@
                     return GetCurrentState();
 
+                Message("Starting Rate Control");
+                Dim::SendCommand("RATE_CONTROL/START_DATA_TAKING");
+
                 Message("Starting FAD");
                 ConfigureFAD();
@@ -316,5 +328,6 @@
             {
                 if (fStatusFTM.second != FTM::kConfigured ||
-                    fStatusFAD.second != FAD::kConfigured)
+                    fStatusFAD.second != FAD::kConfigured ||
+                    fStatusRC.second  < 7)
                     return GetCurrentState();
 
@@ -364,5 +377,6 @@
         fFTM("FTM_CONTROL/STATE",      (void*)NULL, 0, this),
         fFAD("FAD_CONTROL/STATE",      (void*)NULL, 0, this),
-        fLog("DATA_LOGGER/STATE",      (void*)NULL, 0, this)
+        fLog("DATA_LOGGER/STATE",      (void*)NULL, 0, this),
+        fRC("RATE_CONTROL/STATE",      (void*)NULL, 0, this)
     {
         // ba::io_service::work is a kind of keep_alive for the loop.
