diff --git a/MAC/APL/PIC/RSPDriver/src/BSWrite.cc b/MAC/APL/PIC/RSPDriver/src/BSWrite.cc
index de7f32c45b8f08e55725fa24da143ef6666e2c01..346009459da0c4644a6c14af0c8d0ab327e069c9 100644
--- a/MAC/APL/PIC/RSPDriver/src/BSWrite.cc
+++ b/MAC/APL/PIC/RSPDriver/src/BSWrite.cc
@@ -42,6 +42,8 @@ using namespace RTC;
 BSWrite::BSWrite(GCFPortInterface& board_port, int board_id, int blp, const Scheduler& scheduler)
   : SyncAction(board_port, board_id, 1), m_blp(blp), m_scheduler(scheduler)
 {
+  m_mark.resize(StationSettings::instance()->nrRspBoards());
+  m_mark = Timestamp(0,0);
   memset(&m_hdr, 0, sizeof(MEPHeader));
 }
 
@@ -54,12 +56,12 @@ void BSWrite::sendrequest()
 {
 
   // force read/write if DELAY_NEXT seconds after time mark
-  if (m_mark != Timestamp(0,0) && (m_mark + DELAY_NEXT <= m_scheduler.getCurrentTime())) {
+  if (m_mark(getBoardId()) != Timestamp(0,0) && (m_mark(getBoardId()) + DELAY_NEXT <= m_scheduler.getCurrentTime())) {
     
     Cache::getInstance().reset(); // reset all cache values to default
     Cache::getInstance().getState().force(); // force read/write of all register after clear
 
-    m_mark = Timestamp(0,0); // reset mark
+    m_mark(getBoardId()) = Timestamp(0,0); // reset mark
   }
 
   // skip update if the neither of the RCU's settings have been modified
@@ -109,7 +111,7 @@ GCFEvent::TResult BSWrite::handleack(GCFEvent& event, GCFPortInterface& /*port*/
   // change state to indicate that it has been applied in the hardware
   Cache::getInstance().getState().bs().write_ack((getBoardId() * StationSettings::instance()->nrBlpsPerBoard()) + m_blp);
 
-  m_mark = m_scheduler.getCurrentTime();
+  m_mark(getBoardId()) = m_scheduler.getCurrentTime();
 
   return GCFEvent::HANDLED;
 }
diff --git a/MAC/APL/PIC/RSPDriver/src/BSWrite.h b/MAC/APL/PIC/RSPDriver/src/BSWrite.h
index 44b80fecebf39144cf9ba9dab6bec70646025e27..4b42fcca78901a43c9cbcf9be8f9ba28e088a733 100644
--- a/MAC/APL/PIC/RSPDriver/src/BSWrite.h
+++ b/MAC/APL/PIC/RSPDriver/src/BSWrite.h
@@ -62,8 +62,8 @@ namespace LOFAR {
     private:
       EPA_Protocol::MEPHeader m_hdr;
       int m_blp;
-      const Scheduler&        m_scheduler; // for getCurrentTime
-      RTC::Timestamp          m_mark;      // mark time
+      const Scheduler&               m_scheduler; // for getCurrentTime
+      blitz::Array<RTC::Timestamp,1> m_mark;      // mark time for each board
     };
   };
 };
diff --git a/MAC/APL/PIC/RSPDriver/src/Cache.cc b/MAC/APL/PIC/RSPDriver/src/Cache.cc
index 042bfae5d3c8db88ed8771afd80e2b8caf182a01..a4bc2520609480ff95fcb39f4610f90a69398dbb 100644
--- a/MAC/APL/PIC/RSPDriver/src/Cache.cc
+++ b/MAC/APL/PIC/RSPDriver/src/Cache.cc
@@ -179,7 +179,7 @@ void CacheBuffer::reset(void)
   m_versions.ap().resize(StationSettings::instance()->nrBlps());
   m_versions.ap() = versioninit;
 
-  m_clock = 0; //GET_CONFIG("RSPDriver.DEFAULT_SAMPLING_FREQUENCY", i);
+  m_clock = GET_CONFIG("RSPDriver.DEFAULT_SAMPLING_FREQUENCY", i);
 }
 
 RTC::Timestamp CacheBuffer::getTimestamp() const
diff --git a/MAC/APL/PIC/RSPDriver/src/RSUWrite.cc b/MAC/APL/PIC/RSPDriver/src/RSUWrite.cc
index 332a383b52f609e528e032a8aec74a87f6e994d3..45f9b6977c94cb2e72640d913d9f3d3c91ee3ca5 100644
--- a/MAC/APL/PIC/RSPDriver/src/RSUWrite.cc
+++ b/MAC/APL/PIC/RSPDriver/src/RSUWrite.cc
@@ -52,6 +52,8 @@ static const EPA_Protocol::RSUReset  g_RSU_RESET_NONE  = { 0, 0, 0, 0 }; // No a
 RSUWrite::RSUWrite(GCFPortInterface& board_port, int board_id, const Scheduler& scheduler)
   : SyncAction(board_port, board_id, 1), m_scheduler(scheduler)
 {
+  m_mark.resize(StationSettings::instance()->nrRspBoards());
+  m_mark = Timestamp(0,0);
   memset(&m_hdr, 0, sizeof(MEPHeader));
 }
 
@@ -66,14 +68,14 @@ void RSUWrite::sendrequest()
   reset.hdr.set(MEPHeader::RSU_RESET_HDR);
 
   // force read/write if WAIT_AFTER seconds after time mark
-  if (m_mark != Timestamp(0,0) && (m_mark + WAIT_AFTER <= m_scheduler.getCurrentTime())) {
+  if (m_mark(getBoardId()) != Timestamp(0,0) && (m_mark(getBoardId()) + WAIT_AFTER <= m_scheduler.getCurrentTime())) {
     
     // next write all BS registers on all AP's of this board
     for (int blp = 0; blp < StationSettings::instance()->nrBlpsPerBoard(); blp++) {
       Cache::getInstance().getState().bs().reset((getBoardId() * StationSettings::instance()->nrBlpsPerBoard()) + blp);
       Cache::getInstance().getState().bs().write_force((getBoardId() * StationSettings::instance()->nrBlpsPerBoard()) + blp);
     }
-    m_mark = Timestamp(0,0); // reset mark
+    m_mark(getBoardId()) = Timestamp(0,0); // reset mark
   }
 
   // cache modified?
@@ -131,7 +133,7 @@ GCFEvent::TResult RSUWrite::handleack(GCFEvent& event, GCFPortInterface& /*port*
   // mark time if needed
   RSUSettings& s = Cache::getInstance().getBack().getRSUSettings();
   if (s()(getBoardId()).getClear() || s()(getBoardId()).getReset()) {
-    m_mark = m_scheduler.getCurrentTime();
+    m_mark(getBoardId()) = m_scheduler.getCurrentTime();
   }
 
   Cache::getInstance().getBack().getRSUSettings()()(getBoardId()).setRaw(0); // clear the flags
diff --git a/MAC/APL/PIC/RSPDriver/src/RSUWrite.h b/MAC/APL/PIC/RSPDriver/src/RSUWrite.h
index 6c3ebefb3de18f46d0c0da8b7ce430cb9b8e4ccb..7b20138ed0c4ae93f60aa1dbbee201b4199e8ce0 100644
--- a/MAC/APL/PIC/RSPDriver/src/RSUWrite.h
+++ b/MAC/APL/PIC/RSPDriver/src/RSUWrite.h
@@ -62,9 +62,9 @@ namespace LOFAR {
       virtual GCFEvent::TResult handleack(GCFEvent& event, GCFPortInterface& port);
 
     private:
-      EPA_Protocol::MEPHeader m_hdr;
-      const Scheduler&        m_scheduler; // for getCurrentTime
-      RTC::Timestamp          m_mark;      // mark time
+      EPA_Protocol::MEPHeader         m_hdr;
+      const Scheduler&                m_scheduler; // for getCurrentTime
+      blitz::Array<RTC::Timestamp, 1> m_mark;      // mark time for all boards
     };
   };
 };
diff --git a/MAC/APL/PIC/RSPDriver/src/StatusRead.cc b/MAC/APL/PIC/RSPDriver/src/StatusRead.cc
index 9dace3ec56dc1bebc23bad1b81d619e7d57acc10..1c447d2a782a9a15e480a605e2f6cf000cf61998 100644
--- a/MAC/APL/PIC/RSPDriver/src/StatusRead.cc
+++ b/MAC/APL/PIC/RSPDriver/src/StatusRead.cc
@@ -119,10 +119,12 @@ GCFEvent::TResult StatusRead::handleack(GCFEvent& event, GCFPortInterface& /*por
   case 200:
     if (0 == getBoardId()) {
       if (0 == Cache::getInstance().getBack().getClock()) {
+#if 0
 	LOG_INFO_STR(formatString("Receiving initial clock setting from RSP board: %d MHz. Adjusting cache value.",
 				  ack.board.rsp.bp_clock));
 	Cache::getInstance().getFront().getClock() = ack.board.rsp.bp_clock;
 	Cache::getInstance().getBack().getClock()  = ack.board.rsp.bp_clock;
+#endif
       } else if (ack.board.rsp.bp_clock != Cache::getInstance().getBack().getClock()) {
 	LOG_WARN_STR(formatString("Reported clock (%d MHz) is different from cache settings (%d MHz)",
 				  ack.board.rsp.bp_clock, Cache::getInstance().getBack().getClock()));
diff --git a/MAC/APL/PIC/RSPDriver/src/TDSResultRead.cc b/MAC/APL/PIC/RSPDriver/src/TDSResultRead.cc
index d4100a691a34142e2a6142d527996d25eb42a649..ff569754b51193636020b0f0daad75d1ccf311cd 100644
--- a/MAC/APL/PIC/RSPDriver/src/TDSResultRead.cc
+++ b/MAC/APL/PIC/RSPDriver/src/TDSResultRead.cc
@@ -47,6 +47,8 @@ using namespace RTC;
 TDSResultRead::TDSResultRead(GCFPortInterface& board_port, int board_id, const Scheduler& scheduler)
   : SyncAction(board_port, board_id, 1), m_delay(0), m_scheduler(scheduler)
 {
+  m_mark.resize(StationSettings::instance()->nrRspBoards());
+  m_mark = Timestamp(0,0);
   memset(&m_hdr, 0, sizeof(MEPHeader));
 }
 
@@ -58,7 +60,7 @@ TDSResultRead::~TDSResultRead()
 void TDSResultRead::sendrequest()
 {
   // force read/write if WAIT_AFTER seconds after time mark
-  if (m_mark != Timestamp(0,0) && (m_mark + DELAY_NEXT <= m_scheduler.getCurrentTime())) {
+  if (m_mark(getBoardId()) != Timestamp(0,0) && (m_mark(getBoardId()) + DELAY_NEXT <= m_scheduler.getCurrentTime())) {
     
     // After changing the clock an RSP clear is required.
 
@@ -71,7 +73,7 @@ void TDSResultRead::sendrequest()
     Cache::getInstance().getState().rsuclear().reset(getBoardId());
     Cache::getInstance().getState().rsuclear().write_force(getBoardId());
 
-    m_mark = Timestamp(0,0); // reset mark
+    m_mark(getBoardId()) = Timestamp(0,0); // reset mark
   }
 
   // skip update if the Clocks settings have not been modified
@@ -160,7 +162,7 @@ GCFEvent::TResult TDSResultRead::handleack(GCFEvent& event, GCFPortInterface& /*
       Cache::getInstance().getState().tds().read_ack(getBoardId());
 
       // mark completion of clock change
-      m_mark = m_scheduler.getCurrentTime();
+      m_mark(getBoardId()) = m_scheduler.getCurrentTime();
 
     } else {
       LOG_ERROR(formatString("TDSResultRead::handleack (160MHz): unexpected I2C result response, first mismatch @ %d", idiff));
@@ -178,7 +180,7 @@ GCFEvent::TResult TDSResultRead::handleack(GCFEvent& event, GCFPortInterface& /*
       Cache::getInstance().getState().tds().read_ack(getBoardId());
 
       // mark completion of clock change
-      m_mark = m_scheduler.getCurrentTime();
+      m_mark(getBoardId()) = m_scheduler.getCurrentTime();
 
     } else {
       LOG_ERROR(formatString("TDSResultRead::handleack (200MHz): unexpected I2C result response, first mismatch @ %d", idiff));
@@ -196,7 +198,7 @@ GCFEvent::TResult TDSResultRead::handleack(GCFEvent& event, GCFPortInterface& /*
       Cache::getInstance().getState().tds().read_ack(getBoardId());
 
       // mark completion of clock change
-      m_mark = m_scheduler.getCurrentTime();
+      m_mark(getBoardId()) = m_scheduler.getCurrentTime();
 
     } else {
       LOG_ERROR(formatString("TDSResultRead::handleack (OFF): unexpected I2C result response, first mismatch @ %d", idiff));
diff --git a/MAC/APL/PIC/RSPDriver/src/TDSResultRead.h b/MAC/APL/PIC/RSPDriver/src/TDSResultRead.h
index 3dc155bd5f6b1e949819ce4eeb35df0999b98755..f4f3544ba6079d75bcc114cf6c7c0744ddbf526c 100644
--- a/MAC/APL/PIC/RSPDriver/src/TDSResultRead.h
+++ b/MAC/APL/PIC/RSPDriver/src/TDSResultRead.h
@@ -63,8 +63,8 @@ namespace LOFAR {
       EPA_Protocol::MEPHeader m_hdr;
       int m_delay; // used to delay reading back results
 
-      const Scheduler&        m_scheduler; // for getCurrentTime
-      RTC::Timestamp          m_mark;      // mark time
+      const Scheduler&                m_scheduler; // for getCurrentTime
+      blitz::Array<RTC::Timestamp, 1> m_mark;      // mark time
     };
   };
 };