Index: trunk/FACT++/src/ratescan.cc
===================================================================
--- trunk/FACT++/src/ratescan.cc	(revision 12322)
+++ trunk/FACT++/src/ratescan.cc	(revision 12323)
@@ -66,4 +66,5 @@
 
     DimDescribedService fDimData;
+    DimDescribedService fDimProc;
 
     int fCounter;
@@ -94,4 +95,10 @@
 
     string fCommand;
+
+    void UpdateProc()
+    {
+        const array<uint32_t,3> v = {{ fThresholdMin, fThresholdMax, fThresholdStep }};
+        fDimProc.Update(v);
+    }
 
     pair<Time, int> GetNewState(DimStampedInfo &info) const
@@ -280,4 +287,6 @@
         fThresholdStep = evt.Get<uint32_t>(8);
 
+        UpdateProc();
+
         const Time now;
 
@@ -368,4 +377,26 @@
         fReference    = kPatch;
         fReferenceIdx = evt.GetUInt();
+
+        return GetCurrentState();
+    }
+
+    int ChangeStepSize(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ChangeStepSize", 4))
+            return kSM_FatalError;
+
+        fThresholdStep = evt.Get<uint32_t>();
+
+        UpdateProc();
+
+        return GetCurrentState();
+    }
+
+    int ChangeMaximum(const EventImp &evt)
+    {
+        if (!CheckEventSize(evt.GetSize(), "ChangeMaximum", 4))
+            return kSM_FatalError;
+
+        fThresholdMax = evt.Get<uint32_t>();
 
         return GetCurrentState();
@@ -401,4 +432,9 @@
         fRates("FTM_CONTROL/TRIGGER_RATES", (void*)NULL, 0, this),
         fDimData("RATE_SCAN/DATA", "I:1;F:1;F:1;F:1;F:40;F:160", ""),
+        fDimProc("RATE_SCAN/PROCESS_DATA", "I:1;I:1;I:1",
+                 "Rate scan process data"
+                 "|min[DAC]:Value at which scan was started"
+                 "|max[DAC]:Value at which scan will end"
+                 "|step[DAC]:Step size for scan"),
         fCounter(-1), fReference(kCamera), fReferenceIdx(0)
     {
@@ -436,4 +472,14 @@
              "|max[int]:Limiting value in DAC counts"
              "|step[int]:Single step in DAC counts");
+
+        AddEvent("CHANGE_STEP_SIZE", "I:1", kStateInProgress)
+            (bind(&StateMachineRateScan::ChangeStepSize, this, placeholders::_1))
+            ("Change the step size during a ratescan in progress"
+             "|step[int]:Single step in DAC counts");
+
+        AddEvent("CHANGE_MAXIMUM", "I:1", kStateInProgress)
+            (bind(&StateMachineRateScan::ChangeMaximum, this, placeholders::_1))
+            ("Change the maximum limit during a ratescan in progress"
+             "|max[int]:Limiting value in DAC counts");
 
         AddEvent("STOP", kStateInProgress)
