diff --git a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc
index 5647b74ffaa2f8a27ae5a7abd540383b6692deb4..890fec86ccc1456b1c94a726a69c344bfd58467c 100644
--- a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc
+++ b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.cc
@@ -323,7 +323,7 @@ int32 TbbSettings::getFirstChannelNr(int32 board, int32 mp)
 	return((board * itsChannelsOnBoard) + (mp * itsChannelsOnMp));
 }
 
-void TbbSettings::setDestination(int32 rcunr, char *storage)
+void TbbSettings::setDestination(int32 channelnr, char *storage)
 {
     char mac[20];
     char ip[20];
@@ -355,11 +355,8 @@ void TbbSettings::setDestination(int32 rcunr, char *storage)
 		LOG_DEBUG_STR(formatString("storage=%s NOT found", key));
 	}
 	else {
-	    int32 ch;
-	    int32 board;
-	    convertRcu2Ch(rcunr, &board, &ch);
-	    itsChannelInfo[ch * board].dstIpCep = static_cast<string>(ip);
-	    itsChannelInfo[ch * board].dstMacCep = static_cast<string>(mac);
+	    itsChannelInfo[channelnr].dstIpCep = static_cast<string>(ip);
+	    itsChannelInfo[channelnr].dstMacCep = static_cast<string>(mac);
 	}
 }
 
diff --git a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h
index 88a6fb7f309177e6a0c99f6751d262d04945a1e1..9487f823b7833414b50938da92fd957a20f53189 100644
--- a/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h
+++ b/MAC/APL/PIC/TBB_Driver/src/DriverSettings.h
@@ -189,7 +189,7 @@ public:
 	void setDstIpCep(int32 channelnr, string ip);
 	void setSrcMacCep(int32 boardnr, string mac);
 	void setDstMacCep(int32 channelnr, string mac);
-	void setDestination(int32 boardnr, char *storage);
+	void setDestination(int32 channelnr, char *storage);
 	
 	
 	void clearRcuSettings(int32 boardnr);
diff --git a/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc b/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc
index 77fa015e3c819a49c0a7fecbe57718f9ec0f2752..946f6fb197ca23e310509f059f59150e560cc60c 100644
--- a/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc
+++ b/MAC/APL/PIC/TBB_Driver/src/TBBDriver.cc
@@ -1077,13 +1077,17 @@ bool TBBDriver::sendInfo(GCFEvent& event, GCFPortInterface& port)
     		    TBBModeEvent tbb_event(event);
     		    for (int32 rcu = 0; rcu < TS->maxChannels(); rcu++) {
     		        if (tbb_event.rcu_mask.test(rcu)) {
-    		            TS->setChOperatingMode(rcu, tbb_event.rec_mode[rcu]);
+    		            int chan;
+    		            int board;
+    		            TS->convertRcu2Ch(rcu, &board, &chan);
+    		            chan += board * TS->nrChannelsOnBoard();
+    		            TS->setChOperatingMode(chan, tbb_event.rec_mode[rcu]);
     		        }
     		    }
     		    
     		    TBBModeAckEvent ack;
         		for (int32 i = 0; i < TS->maxBoards(); i++) {
-        			ack.status_mask[i] = 0;
+        			ack.status_mask[i] = TBB_SUCCESS;
         		}
     		    port.send(ack);
     		} else {
@@ -1097,12 +1101,16 @@ bool TBBDriver::sendInfo(GCFEvent& event, GCFPortInterface& port)
     		    TBBCepStorageEvent tbb_event(event);
     		    for (int32 rcu = 0; rcu < TS->maxChannels(); rcu++) {
     		        if (tbb_event.rcu_mask.test(rcu)) {
-    		            TS->setDestination(rcu, tbb_event.destination);
+    		            int chan;
+    		            int board;
+    		            TS->convertRcu2Ch(rcu, &board, &chan);
+    		            chan += board * TS->nrChannelsOnBoard();
+    		            TS->setDestination(chan, tbb_event.destination);
     		        }
     		    }
     		    TBBCepStorageAckEvent tbb_ack;
         		for (int32 i = 0; i < TS->maxBoards(); i++) {
-        			tbb_ack.status_mask[i] = 0;
+        			tbb_ack.status_mask[i] = TBB_SUCCESS;
         		}
     		    port.send(tbb_ack);
     		} else {