diff --git a/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc b/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc
index d99a7aaa1911fbabe38c8343e0d205eea6383d5c..9b881fd6a7ea7568de3a83a5787ffe173c737026 100644
--- a/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc
+++ b/MAC/APL/PIC/RSPDriver/src/RCUProtocolWrite.cc
@@ -166,7 +166,7 @@ GCFEvent::TResult RCUProtocolWrite::handleack(GCFEvent& event, GCFPortInterface&
 
     // Mark modification as applied when write of RCU result register has completed
 
-    Cache::getInstance().getState().rcuprotocol().schedule_read(global_rcu);
+    Cache::getInstance().getState().rcuprotocol().read_schedule(global_rcu);
 
   }
   
diff --git a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc
index 8b1b4fb40f7b7e9cb4760e068a8091afbb710ace..370b4643077c905181ccfc3686afea5712409d77 100644
--- a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc
+++ b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.cc
@@ -38,11 +38,8 @@ using namespace LOFAR;
 using namespace RSP;
 using namespace EPA_Protocol;
 
-#define RCURESULTREAD_DELAY 2
-
 RCUResultRead::RCUResultRead(GCFPortInterface& board_port, int board_id)
-  : SyncAction(board_port, board_id, StationSettings::instance()->nrBlpsPerBoard() * MEPHeader::N_POL), // *N_POL for X and Y
-    m_delay(0)
+  : SyncAction(board_port, board_id, StationSettings::instance()->nrBlpsPerBoard() * MEPHeader::N_POL) // *N_POL for X and Y
 {
   memset(&m_hdr, 0, sizeof(MEPHeader));
 }
@@ -62,13 +59,6 @@ void RCUResultRead::sendrequest()
     return;
   }
 
-  // delay TDSRESULTREAD_DELAY periods
-  if (m_delay++ < RCURESULTREAD_DELAY) {
-    setContinue(true);
-    return;
-  }
-  m_delay = 0;
-
   // set appropriate header
   MEPHeader::FieldsType hdr;
   if (0 == global_rcu % MEPHeader::N_POL) {
diff --git a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h
index 98cc3e888d59a895ed0292ab864ecda08b11d91c..52ed9ebf25f7eefcd294a5bc49fd3dfc1a277e16 100644
--- a/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h
+++ b/MAC/APL/PIC/RSPDriver/src/RCUResultRead.h
@@ -60,7 +60,6 @@ namespace LOFAR {
 
     private:
       EPA_Protocol::MEPHeader m_hdr;
-      int m_delay; // used to delay reading back results
     };
   };
 };
diff --git a/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc b/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc
index 97d4317ee906fa5756e5a23fa0b3992f72f0f711..be4d181b5cee9f3f708d72b9f3404a13f35d265c 100644
--- a/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc
+++ b/MAC/APL/PIC/RSPDriver/src/TDSProtocolWrite.cc
@@ -223,7 +223,7 @@ GCFEvent::TResult TDSProtocolWrite::handleack(GCFEvent& event, GCFPortInterface&
   // Mark register modification as applied
   // Still needs to be confirmed by TDSRegisterRead
   if (0 == m_remaining) {
-    Cache::getInstance().getState().tds().schedule_read(getBoardId());
+    Cache::getInstance().getState().tds().read_schedule(getBoardId());
   }
 
   return GCFEvent::HANDLED;
diff --git a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h
index 66386960f474882039384e5bad3077bd4f3ac695..c5f6720c9ecb53e4ff2849c277b056643cf6dc29 100644
--- a/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h
+++ b/MAC/APL/PIC/RSP_Protocol/include/APL/RSP_Protocol/AllRegisterState.h
@@ -83,24 +83,24 @@ namespace LOFAR {
 
 	void force() {
 	  sys_state.read();
-	  bf_state.write();
-	  ss_state.write();
-	  rcusettings_state.write();
-	  rcuprotocol_state.write();
-	  rsuclear_state.write();
-	  diagwgsettings_state.write();
+	  bf_state.write_force();
+	  ss_state.write_force();
+	  rcusettings_state.write_force();
+	  rcuprotocol_state.write_force();
+	  rsuclear_state.write_force();
+	  diagwgsettings_state.write_force();
 	  sst_state.read();
 	  bst_state.read();
 	  xst_state.read();
-	  cdo_state.write();
-	  bs_state.write();
-	  tds_state.write();
+	  cdo_state.write_force();
+	  bs_state.write_force();
+	  tds_state.write_force();
 	}
 
 	void schedule() {
 	  sys_state.read();
-	  bf_state.write();
-	  ss_state.write();
+	  bf_state.write_force();
+	  ss_state.write_force();
 	  rcusettings_state.check();
 	  rcuprotocol_state.check();
 	  rsuclear_state.check();
diff --git a/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h b/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h
index 6efd4db0194ba7417fba3b78ad90c28b3a840503..c5c36ddfd4434a3be8acdbad1c559181a2b6a116 100644
--- a/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h
+++ b/MAC/APL/RTCCommon/include/APL/RTCCommon/RegisterState.h
@@ -99,9 +99,10 @@ namespace LOFAR {
 
 	void read         (int i = -1) { tran(IDLE,          READ,          i); }
 	void check        (int i = -1) { tran(IDLE,          CHECK,         i); }
+	void write_force  (int i = -1) { tran(IDLE,          WRITE,         i); }
 	void unmodified   (int i = -1) { tran(CHECK,         IDLE,          i); }
 	void write        (int i = -1) { tran(CHECK,         WRITE,         i); }
-	void schedule_read(int i = -1) { tran(WRITE,         READ,          i); }
+	void read_schedule(int i = -1) { tran(WRITE,         READ,          i); }
 	void read_ack     (int i = -1) { tran(READ,          DONE,          i); }
 	void write_ack    (int i = -1) { tran(WRITE,         DONE,          i); }
 	void read_error   (int i = -1) { tran(READ,          READ_ERROR,    i); }
diff --git a/MAC/APL/RTCCommon/src/RegisterState.cc b/MAC/APL/RTCCommon/src/RegisterState.cc
index e3ab1f3e9c7b00533eb0aedd218ff16460767eb3..0c953dbdc05e61c3c9415304801b2b2eaea86602 100644
--- a/MAC/APL/RTCCommon/src/RegisterState.cc
+++ b/MAC/APL/RTCCommon/src/RegisterState.cc
@@ -36,7 +36,8 @@ void RegisterState::tran(State source, State target, int i)
     ub = m_state.extent(blitz::firstDim);
   } else {
     ASSERT(i >= 0 && i < m_state.extent(blitz::firstDim));
-    lb = ub = i;
+    lb = i;
+    ub = i + 1;
   }
 
   for (int j = lb; j < ub; j++) {
@@ -59,7 +60,8 @@ void RegisterState::clear(int i)
     ub = m_state.extent(blitz::firstDim);
   } else {
     ASSERT(i >= 0 && i < m_state.extent(blitz::firstDim));
-    lb = ub = i;
+    lb = i;
+    ub = i + 1;
   }
    
   for (int j = lb; j < ub; j++) {