diff --git a/.gitattributes b/.gitattributes
index 75da45b796688b4249c36763f214b5705c33b074..949211191ecc7b7190250242a8cc84475c5b6501 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1681,6 +1681,7 @@ MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode6.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode7.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode1.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode3.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode1.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode5.dat -text
@@ -1696,6 +1697,7 @@ MAC/Deployment/data/StaticMetaData/CalTables/CalTable_030_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_030_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_032_mode1.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_032_mode3.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_032_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode1.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode5.dat -text
@@ -1744,6 +1746,8 @@ MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode1.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode6.dat -text svneol=unset#unset
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode7.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode1.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_501_mode1.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_501_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode1.dat -text
@@ -1751,8 +1755,11 @@ MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode6.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode7.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode1.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode1.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_601_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_601_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_601_mode7.dat -text
@@ -1761,6 +1768,8 @@ MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode6.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_604_mode5.dat -text
+MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode5.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode3.dat -text
 MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode5.dat -text
diff --git a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.cc b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.cc
index 5a3cac41cc464e79184820be33a88e8acaf66112..f83f0cce5885de8e0a2c5a24dde9ec052d4c6509 100644
--- a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.cc
+++ b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.cc
@@ -85,10 +85,7 @@ MACScheduler::MACScheduler() :
 
 	// Read the schedule periods for starting observations.
 	itsQueuePeriod 		= globalParameterSet()->getTime("QueuePeriod");
-	itsClaimPeriod 		= globalParameterSet()->getTime("ClaimPeriod");
-	LOG_INFO_STR("Queueperiod = " << itsQueuePeriod << ", claimperiod = " << itsClaimPeriod);
-	ASSERTSTR(itsQueuePeriod > itsClaimPeriod, 
-				"QueuePeriod must be longer than ClaimPeriod otherwise there is no time for the preparePeriod");
+	LOG_INFO_STR("Queueperiod = " << itsQueuePeriod);
 
 	// attach to child control task
 	itsChildControl = ChildControl::instance();
diff --git a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in
index 3b9d30942b21a68a8d5b35548a9215f52c0e73fe..5346cf451415ea2b86bd5f4e06fa927ba510156b 100644
--- a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in
+++ b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.conf.in
@@ -9,7 +9,6 @@ OTDBpollInterval	= 5s
 
 # startup periods of Observations
 QueuePeriod			= 3m
-ClaimPeriod			= 2m
 
 # manage lists of observations
 pollIntervalPlanned	= 5s	# check if observations must be started
diff --git a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.h b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.h
index 672fc2103829bbdc5f85ead5a90f87310c67d3ca..b72775f0aeafe4c47be91e2bddfe7c2b3e17e6ab 100644
--- a/MAC/APL/MainCU/src/MACScheduler/MACScheduler.h
+++ b/MAC/APL/MainCU/src/MACScheduler/MACScheduler.h
@@ -145,7 +145,6 @@ private:
 
 	// Scheduling settings
 	uint32				itsQueuePeriod;			// period between queueing and start
-	uint32				itsClaimPeriod;			// period between claiming and start
       
 	// OTDB related variables.
    	OTDB::OTDBconnection*	itsOTDBconnection;		// connection to the database
diff --git a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc
index d422e12412760d9cef7cc0e545d29ba91dad69c1..21ac4d867b35652c3ef338f77c78d77a097ff5a2 100644
--- a/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc
+++ b/MAC/APL/MainCU/src/ObservationControl/ObservationControl.cc
@@ -126,7 +126,7 @@ ObservationControl::ObservationControl(const string&	cntlrName) :
 	itsParentControl = ParentControl::instance();
 
 	// need port for timers.
-	itsTimerPort = new GCFTimerPort(*this, "TimerPort");
+	itsTimerPort = new GCFTimerPort(*this, "ObservationControlTimer");
 
 	// create a datapoint service for setting runstates and so on
 	itsDPservice = new DPservice(this);
diff --git a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc
index 5bbcef9d8e3682417013502e1db9bf65905ceb98..717cebb6d6fafd94db58b27a7e6aba158a77907f 100644
--- a/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc
+++ b/MAC/APL/PAC/ITRFBeamServer/src/BeamServer.cc
@@ -83,7 +83,7 @@ BeamServer::BeamServer(const string& name, long	timestamp) :
 	itsHBAUpdateInterval	(0),
 	itsTestSingleShotTimestamp(timestamp)
 {
-//	LOG_INFO(Version::getInfo<ITRFBeamServerVersion>("ITRFBeamServer"));
+	LOG_INFO(Version::getInfo<ITRFBeamServerVersion>("ITRFBeamServer"));
 
 	// register protocols for debugging
 	registerProtocol(IBS_PROTOCOL, IBS_PROTOCOL_STRINGS);
@@ -1382,7 +1382,7 @@ complex<double>	BeamServer::_getCalFactor(uint rcuMode, uint rcu, uint subbandNr
 		break;
 	}
 
-	LOG_DEBUG_STR("calFactor(" << rcuMode << "," << rcu << "," << subbandNr << ")=" << result);
+//	LOG_DEBUG_STR("calFactor(" << rcuMode << "," << rcu << "," << subbandNr << ")=" << result);
 	return (result);
 }
 
@@ -1490,11 +1490,11 @@ void BeamServer::compute_weights(Timestamp weightTime)
 			LOG_DEBUG_STR("No antennas defined in this field");
 			continue;
 		}
-		LOG_DEBUG_STR("ITRFRCUPos = " << rcuPosITRF);
+//		LOG_DEBUG_STR("ITRFRCUPos = " << rcuPosITRF);
 
 		// Get geographical location of subarray in ITRF
 		blitz::Array<double, 1> fieldCentreITRF = gAntField->Centre(fieldName);
-		LOG_DEBUG_STR("ITRF position antennaField: " << fieldCentreITRF);
+//		LOG_DEBUG_STR("ITRF position antennaField: " << fieldCentreITRF);
 
 		// convert ITRF position of all antennas to J2000 for timestamp t
 		blitz::Array<double,2>	rcuJ2000Pos; // [rcu, xyz]
@@ -1505,11 +1505,11 @@ void BeamServer::compute_weights(Timestamp weightTime)
 
 		// Lengths of the vector of the antennaPosition i.r.t. the fieldCentre,
 		blitz::Array<double,1>	rcuPosLengths = gAntField->RCULengths(fieldName);
-		LOG_DEBUG_STR("rcuPosLengths = " << rcuPosLengths);
+//		LOG_DEBUG_STR("rcuPosLengths = " << rcuPosLengths);
 
 		// denormalize length of vector
 		rcuJ2000Pos = rcuJ2000Pos(tensor::i, tensor::j) * rcuPosLengths(tensor::i);
-		LOG_DEBUG_STR("J2000RCUPos@fullLength=" << rcuJ2000Pos);
+//		LOG_DEBUG_STR("J2000RCUPos@fullLength=" << rcuJ2000Pos);
 
 		// for all beams using this field
 		map<string, DigitalBeam*>::iterator	beamIter = itsBeamPool.begin();
diff --git a/MAC/APL/PAC/ITRFBeamServer/src/CMakeLists.txt b/MAC/APL/PAC/ITRFBeamServer/src/CMakeLists.txt
index 3175e7bb8ed7cc81e1cd9b9fc51d68fc42a39269..45bf2de6d4fc2d9c5fbcb0ee051872574701ce69 100644
--- a/MAC/APL/PAC/ITRFBeamServer/src/CMakeLists.txt
+++ b/MAC/APL/PAC/ITRFBeamServer/src/CMakeLists.txt
@@ -10,8 +10,8 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
 # Add the directory where the generated C++ headers are stored to the -I path.
 #include_directories(${CMAKE_BINARY_DIR}/include/MAC)
 
-#lofar_add_bin_program(versionitrfbeamserver versionitrfbeamserver.cc)
-lofar_add_bin_program(BeamServer BeamServerMain.cc BeamServer.cc Beam.cc DigitalBeam.cc AnalogueBeam.cc AnaBeamMgr.cc StatCal.cc)
+lofar_add_bin_program(versionitrfbeamserver versionitrfbeamserver.cc Package__Version.cc)
+lofar_add_bin_program(BeamServer BeamServerMain.cc BeamServer.cc Beam.cc DigitalBeam.cc AnalogueBeam.cc AnaBeamMgr.cc StatCal.cc Package__Version.cc)
 lofar_add_bin_program(beamctl beamctl.cc)
 
 configure_file(
diff --git a/MAC/APL/StationCU/src/BeamControl/BeamControl.cc b/MAC/APL/StationCU/src/BeamControl/BeamControl.cc
index 6ca4a0549e3dadb2880c40f41457f6f1aec0cfa3..86a823209cd3710631256d84756ae18030346a7c 100644
--- a/MAC/APL/StationCU/src/BeamControl/BeamControl.cc
+++ b/MAC/APL/StationCU/src/BeamControl/BeamControl.cc
@@ -442,7 +442,7 @@ GCFEvent::TResult BeamControl::allocBeams_state(GCFEvent& event, GCFPortInterfac
 	switch (event.signal) {
 	case F_ENTRY: 
 		itsTimerPort->cancelAllTimers();
-		itsTimerPort->setTimer(2.0);		// give CalControl + CalServer some time to allocated the beams.
+		itsTimerPort->setTimer(0.2);		// give CalControl + CalServer some time to allocated the beams.
 		break;
 
 	case F_TIMER: {
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode1.dat
index 701bea31a017089c695d70a13d495d755208c939..b33352c4479153e46b14ac578d27cb702973a276 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode3.dat
index 26ac8df798f937833c11c9c68310a0ef76f2e7e6..4b8593ff93d40b22054e47a8800cd85f150de45a 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode5.dat
index e22d9816c8fa20d75d53ba67d650ebe396897276..5711e5b5f91c62bcea3c452a6008d3c525fc2682 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_002_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode1.dat
index 2b620f54ce0bb16ae2411c65f988b2e41c0025e9..19639517a5aae671768189330ec637139620bc52 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode3.dat
index ee850d241752fcb60623283cc9839c920db6d521..4eceac167f872cdfb5198e56d60de9aa041e8918 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode5.dat
index de48235a91cdf2ff7dfd82cb8025291d41ec70d1..fdd02adddf82d072b69ea75df893e6a2b65aea7d 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_003_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode1.dat
index 94f2aeb4052a33e2610c8eb50e8bd5b07daacae6..dd130598def14c5b7d8a1256e32aac6473501630 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode3.dat
index e8db92167f5bc54f5a919b403e15915a8659456d..964dd562ca2a9958756d9113d3242bd6d4d92a4d 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode5.dat
index 09e3cf5e41d0b43c44cc1d9ab0c57af7ff73053d..a31146e4b1fe88810f9ce80800e261a12c1decb3 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_004_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode1.dat
index 8c5b6ca1ab97751e7fc2094138fb55ab17056a85..79e4534decb914bb98742b158ada6deb96cadd79 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode3.dat
index 57cb15557dd4c96b39beaea8a231e5bcfd12e54f..9b520eb5a0db171cd15697b4e20b1cb332dd6c5e 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode5.dat
index d1c5cb450ddf73c6314e57990b10b96d017a89f7..0e5c4f3fe1627fb711cab4c707f8821184e10a5b 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_005_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode1.dat
index 78bfffc546d2aa4b3f8ec6f48ef7e3d67eb0d057..ec9274c3390f2171755da5167c8db69ac6dc3045 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode3.dat
index 747e527b43d1dc63f862d364073cb489c225b162..b73150e0fdf8479c4a71b3c1e43b46dc4903c398 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode5.dat
index bb05a5a37776efb5bbd401578f1e3de1d5d8f15a..16423d5dccc960487de22a4ed72f54faeb759f7b 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_006_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode1.dat
index e358eff7fc5503a6117d61296921c4b64add5c92..9edbd1a2a8e05a885cdb312129c156591387b036 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode3.dat
index 6d272e09bf4bb07fcae2dead4d6227232e7a7293..6bf2d0db5b75faa8530a25b125f0cc4fec76aa27 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode5.dat
index 365b74af129ac7ec9f579600548dc34ab805518d..f72fd15fe21e9c1c6f26e813aa7e222130e5e51a 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_007_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode1.dat
index 49544f88d2213f7bcbe802ccb06ced019778134e..6d244a156cba526c3f15916638893ad2fba5b224 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode5.dat
index e584f5b5fa2f2473e1ed3fa54779c3375f3e9811..608c6061c13b7c8108fb26aff8b2b92210f22819 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_017_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode1.dat
index 6ef1f38dde63c1a431b1e0a26a830f72d3a1c821..79d9b45d41b37016275476d92b257c9c0c7bd34c 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode5.dat
new file mode 100644
index 0000000000000000000000000000000000000000..6e3d5e51e30865bbf41b8a59dc61a08c33c23ad3
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_021_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode1.dat
index b9951f769a859eaa227d68ae9e0a9ea797baae26..fe92e8997923e07e764847de9d22a8195bd5a3f8 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode5.dat
index 9f64d9166d7ab3e32099efebd4a6a21d6876d83a..7334905e4f3782c1d07599372a0e75de3110c6cd 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_024_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_026_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_026_mode5.dat
index 69dac13ff26c9288fcfd32629a92a6cf6d1519cc..9017fece0b44a8ab8c3fed3ebd4aad380a230628 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_026_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_026_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_030_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_030_mode5.dat
index 6da551946bd450875ded253acbacd68ec758d985..278dcb6f9176d3b8a9c667ea3fa4301367358df5 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_030_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_030_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_032_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_032_mode5.dat
new file mode 100644
index 0000000000000000000000000000000000000000..2ba67b78bc3660d51eddbc726eb9bb724eeae019
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_032_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode5.dat
index 9a15a081524e2e4729eef629d72c1693cdd711d3..da66990fe8bb6f614b8238bf8d5e470460f79e6c 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_101_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_103_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_103_mode5.dat
index 63aa4a04226281000e2cac513e4300bf84d6c9c2..892b86188063f417909851749a2d60e69c3df6d8 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_103_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_103_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_106_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_106_mode3.dat
index 89c169d5c542faeb6868e057b21bc2b1c4c7e6ad..738a86d993b1c26581525d338b89e78d8615ae8c 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_106_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_106_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_201_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_201_mode5.dat
index 85167c09939dc64b3f2234cefa6885941c524838..f5d43d4c83b715fce1edad29cc9b3ed1bd6da46e 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_201_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_201_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_205_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_205_mode3.dat
index 0db3b048b1acc192a42cd6c021f89bd8cd9b3b11..90cfb589b5910d987707996cbc0e1f6b67e00d4a 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_205_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_205_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_208_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_208_mode1.dat
index d71487af21076e444d7687a9a919882c9947634e..2aae0a492e372f15b0d41a511cf5df46c79afdc6 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_208_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_208_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode1.dat
index 7eb373511a461232a6f561c94e2b626fa0315fcc..4b8dd30cd0398ae7ef126023c5ca32111695b1c5 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode5.dat
index 7031cd98e088d36f2216e6c73b78bebcdbf1279f..838d54dec959d2a92d48fbbc646787467786c4d7 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_301_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode3.dat
index c2a528555a9717ea5024abd6adbdacd54a0ae63d..8dd880e58b08d37fc04a359f3d9141350c5bf834 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode5.dat
index 6f53d72eec3de8edac9c46b717994c56c18954da..ecded8c6766f28031186ef795c27db71186b215e 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_302_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_306_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_306_mode1.dat
index 89dc2fe0a8f1df6e0d167b2bf7bdb3d387b5544c..1f63dd7a0b2d9ebc014214e1213cd669ec6c7a44 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_306_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_306_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode1.dat
index 5e7a65cf4eac17396fdcea2b6f786727682cc669..ae5eb75555200d92f15e0283f53d8571756bf645 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode3.dat
index 2ff37635ddedf3802559019a928ed5cf1f18d781..8ac5c46ed1bfd8aaf02fd9ce8adaf6b915735a0d 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_307_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode5.dat
index ecf06bfc85d1b3d4b2bc6f6172935ae274f51424..b39d359b7f4c626b542bd86aeea1947928803b42 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_401_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode1.dat
new file mode 100644
index 0000000000000000000000000000000000000000..16073656a1729b1f1eabcb921d6a4abe56a17691
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode3.dat
new file mode 100644
index 0000000000000000000000000000000000000000..65aba86c031adf10cf7d861aacc33ba1e4b3fe3f
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_406_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode1.dat
index 81c9c578f8d70a5394d04e647e986a1aa099488c..34b608abc8a2e53a5111a28ef213eb962f53a2a4 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode3.dat
index 4c2f2728bd77c6768ec35e7c7209412947b7bc69..de07cafb8237ad41893f463a98db8f3dfed36a09 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_503_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode1.dat
new file mode 100644
index 0000000000000000000000000000000000000000..5aa749dda03113d3b1310990c897334ae29d132b
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode3.dat
new file mode 100644
index 0000000000000000000000000000000000000000..4ac4137544e779467759114de1d188e66d46da50
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_508_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode1.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode1.dat
index 7e9c9071771087d7d54d28a600fe3dfadd09f3fa..ea9a93355263bce7f0ad25492bd244076e07294d 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode1.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode1.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode3.dat
new file mode 100644
index 0000000000000000000000000000000000000000..7f4c3c6805a4a8b4072889d7588d11b54dc32fdf
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_509_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode3.dat
index 3a41d1a64c8c7b6cf6f0e6b38cdc7a2d81567d29..a4d36738f7fcaa29252145255f5c7ad15fdbe9ac 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode5.dat
index 817efaba4ca9598e0defb70ff0643bcbf0ea0ce9..ace64662536bb3dbff063d518072d49e974307d3 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_602_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode5.dat
index 4f481d36c733069f4d0abf39e0ac54b1ccb18126..d6fd1cbb6bafc88385d60b6fcbdbe791a082a7a6 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_603_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_604_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_604_mode5.dat
new file mode 100644
index 0000000000000000000000000000000000000000..341ff94a8107e76237fdc9fcfd28733a7b84ef1c
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_604_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode3.dat
new file mode 100644
index 0000000000000000000000000000000000000000..afa996cafeb0fa918737110bbd220841bb856cc4
Binary files /dev/null and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode5.dat
index fa2832473461900dd19dc9d25efceff836adc44b..eab8cf77bdfc88391e6224850c5d396bfe116e77 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_605_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode3.dat
index d56475049c4aa46487bba092f42b4856220d62d4..2e05093fec4d55215a4cf716f0cd57a462293774 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode5.dat
index a68a7abab667d047d7692d7079d2ca2fdad0f7e3..2d12ce1d6caecb1273033d0a7e36b43ac4b96a17 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_606_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode3.dat
index 0b19af9d88abb9fd84f75ad981c17b732fee2fcf..e77f7f5932ea2a6bd9edc760007e423b4c666f91 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode5.dat
index ebce68f8695fdac61bc4d08d7a5c92e3ee91667f..51040ee60abcc23177b60479e5ba56ce6cde0ed4 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_607_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode3.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode3.dat
index b5651a9e2f230eb4406c74542066be31ecd678c8..61ef38ae07f7c1ddf09bef1bdc8fe8eb774bfdce 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode3.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode3.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode5.dat b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode5.dat
index 45456e54b50d6c27412c7ed5271cac358aa612db..1109f5aaa1b2066f11bda7b88a533e78867c2f74 100644
Binary files a/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode5.dat and b/MAC/Deployment/data/StaticMetaData/CalTables/CalTable_608_mode5.dat differ
diff --git a/MAC/Deployment/data/StaticMetaData/HBADeltas/DE601-HBADeltas.conf b/MAC/Deployment/data/StaticMetaData/HBADeltas/DE601-HBADeltas.conf
index b0647c15644eaeba3ddf7ad6fa6b5369ca86fc03..0754f98bb6288afd59072c2d7ae74cb4220449e0 100644
--- a/MAC/Deployment/data/StaticMetaData/HBADeltas/DE601-HBADeltas.conf
+++ b/MAC/Deployment/data/StaticMetaData/HBADeltas/DE601-HBADeltas.conf
@@ -1,22 +1,24 @@
 #
 # HBADeltas.conf for DE601
 #
+# edited 2011 Jun 08 by James M Anderson
+# as HBA tiles are rotated wrt to other LOFAR stations
 HBAdeltas
 16 x 2 [
--1.285  2.319
--0.083  1.975
- 1.118  1.630
- 2.319  1.285
--1.630  1.118
--0.428  0.773
- 0.773  0.428
- 1.975  0.083
--1.975 -0.083
--0.773 -0.428
- 0.428 -0.773
- 1.630 -1.118
 -2.319 -1.285
+-1.975 -0.083
+-1.630  1.118
+-1.285  2.319
 -1.118 -1.630
+-0.773 -0.428
+-0.428  0.773
+-0.083  1.975
  0.083 -1.975
+ 0.428 -0.773
+ 0.773  0.428
+ 1.118  1.630
  1.285 -2.319
-]
\ No newline at end of file
+ 1.630 -1.118
+ 1.975  0.083
+ 2.319  1.285
+]
diff --git a/MAC/Deployment/data/StaticMetaData/StationInfo.dat b/MAC/Deployment/data/StaticMetaData/StationInfo.dat
index a388d64f73c92103aa2c7865b3711c710f62d2b4..1bf3bd0fff36656f9d88698cf908667556bf1e09 100644
--- a/MAC/Deployment/data/StaticMetaData/StationInfo.dat
+++ b/MAC/Deployment/data/StaticMetaData/StationInfo.dat
@@ -9,7 +9,7 @@
 #   in the file /etc/ntp.core.0 (for GPS). Units (deg, deg, m)
 # nrRSP, nrTBB, nrLBA, nrHBA are for RemoteStation.conf
 # HBAsplit indicates split HBA field (core stations only)
-# LBAcal 
+# LBAcal
 #
 # name  ID    ring long         lat             height  nrRSP nrTBB nrLBA nrHBA HBAsplit LBAcal
 #--------------------------------------------------------------------------------------------------------------
diff --git a/MAC/Deployment/data/StaticMetaData/Storage+MAC.dat b/MAC/Deployment/data/StaticMetaData/Storage+MAC.dat
index 9f3c381bf13d4c49eb2d6d13b3a586cd7863387e..7ff233e5d5a799519be534b70f9a30ae8e199cf2 100644
--- a/MAC/Deployment/data/StaticMetaData/Storage+MAC.dat
+++ b/MAC/Deployment/data/StaticMetaData/Storage+MAC.dat
@@ -27,103 +27,103 @@ lse021 00:24:81:80:6a:a1 10.174.0.21
 lse022 00:24:81:80:6e:3d 10.174.0.22 
 lse023 00:24:81:80:6e:c1 10.174.0.23 
 lse024 00:24:81:80:39:4d 10.174.0.24 
-locus001 00:00:00:00:00:00 10.135.252.1
-locus002 00:00:00:00:00:00 10.135.252.2
-locus003 00:00:00:00:00:00 10.135.252.3
-locus004 00:00:00:00:00:00 10.135.252.4
-locus005 00:00:00:00:00:00 10.135.252.5
-locus006 00:00:00:00:00:00 10.135.252.6
-locus007 00:00:00:00:00:00 10.135.252.7
-locus008 00:00:00:00:00:00 10.135.252.8
-locus009 00:00:00:00:00:00 10.135.252.9
-locus010 00:00:00:00:00:00 10.135.252.10
-locus011 00:00:00:00:00:00 10.135.252.11
-locus012 00:00:00:00:00:00 10.135.252.12
-locus013 00:00:00:00:00:00 10.135.252.13
-locus014 00:00:00:00:00:00 10.135.252.14
-locus015 00:00:00:00:00:00 10.135.252.15
-locus016 00:00:00:00:00:00 10.135.252.16
-locus017 00:00:00:00:00:00 10.135.252.17
-locus018 00:00:00:00:00:00 10.135.252.18
-locus019 00:00:00:00:00:00 10.135.252.19
-locus020 00:00:00:00:00:00 10.135.252.20
-locus021 00:00:00:00:00:00 10.135.252.21
-locus022 00:00:00:00:00:00 10.135.252.22
-locus023 00:00:00:00:00:00 10.135.252.23
-locus024 00:00:00:00:00:00 10.135.252.24
-locus025 00:00:00:00:00:00 10.135.252.25
-locus026 00:00:00:00:00:00 10.135.253.1
-locus027 00:00:00:00:00:00 10.135.253.2
-locus028 00:00:00:00:00:00 10.135.253.3
-locus029 00:00:00:00:00:00 10.135.253.4
-locus030 00:00:00:00:00:00 10.135.253.5
-locus031 00:00:00:00:00:00 10.135.253.6
-locus032 00:00:00:00:00:00 10.135.253.7
-locus033 00:00:00:00:00:00 10.135.253.8
-locus034 00:00:00:00:00:00 10.135.253.9
-locus035 00:00:00:00:00:00 10.135.253.10
-locus036 00:00:00:00:00:00 10.135.253.11
-locus037 00:00:00:00:00:00 10.135.253.12
-locus038 00:00:00:00:00:00 10.135.253.13
-locus039 00:00:00:00:00:00 10.135.253.14
-locus040 00:00:00:00:00:00 10.135.253.15
-locus041 00:00:00:00:00:00 10.135.253.16
-locus042 00:00:00:00:00:00 10.135.253.17
-locus043 00:00:00:00:00:00 10.135.253.18
-locus044 00:00:00:00:00:00 10.135.253.19
-locus045 00:00:00:00:00:00 10.135.253.20
-locus046 00:00:00:00:00:00 10.135.253.21
-locus047 00:00:00:00:00:00 10.135.253.22
-locus048 00:00:00:00:00:00 10.135.253.23
-locus049 00:00:00:00:00:00 10.135.253.24
-locus050 00:00:00:00:00:00 10.135.253.25
-locus051 00:00:00:00:00:00 10.135.254.1
-locus052 00:00:00:00:00:00 10.135.254.2
-locus053 00:00:00:00:00:00 10.135.254.3
-locus054 00:00:00:00:00:00 10.135.254.4
-locus055 00:00:00:00:00:00 10.135.254.5
-locus056 00:00:00:00:00:00 10.135.254.6
-locus057 00:00:00:00:00:00 10.135.254.7
-locus058 00:00:00:00:00:00 10.135.254.8
-locus059 00:00:00:00:00:00 10.135.254.9
-locus060 00:00:00:00:00:00 10.135.254.10
-locus061 00:00:00:00:00:00 10.135.254.11
-locus062 00:00:00:00:00:00 10.135.254.12
-locus063 00:00:00:00:00:00 10.135.254.13
-locus064 00:00:00:00:00:00 10.135.254.14
-locus065 00:00:00:00:00:00 10.135.254.15
-locus066 00:00:00:00:00:00 10.135.254.16
-locus067 00:00:00:00:00:00 10.135.254.17
-locus068 00:00:00:00:00:00 10.135.254.18
-locus069 00:00:00:00:00:00 10.135.254.19
-locus070 00:00:00:00:00:00 10.135.254.20
-locus071 00:00:00:00:00:00 10.135.254.21
-locus072 00:00:00:00:00:00 10.135.254.22
-locus073 00:00:00:00:00:00 10.135.254.23
-locus074 00:00:00:00:00:00 10.135.254.24
-locus075 00:00:00:00:00:00 10.135.254.25
-locus076 00:00:00:00:00:00 10.135.255.1
-locus077 00:00:00:00:00:00 10.135.255.2
-locus078 00:00:00:00:00:00 10.135.255.3
-locus079 00:00:00:00:00:00 10.135.255.4
-locus080 00:00:00:00:00:00 10.135.255.5
-locus081 00:00:00:00:00:00 10.135.255.6
-locus082 00:00:00:00:00:00 10.135.255.7
-locus083 00:00:00:00:00:00 10.135.255.8
-locus084 00:00:00:00:00:00 10.135.255.9
-locus085 00:00:00:00:00:00 10.135.255.10
-locus086 00:00:00:00:00:00 10.135.255.11
-locus087 00:00:00:00:00:00 10.135.255.12
-locus088 00:00:00:00:00:00 10.135.255.13
-locus089 00:00:00:00:00:00 10.135.255.14
-locus090 00:00:00:00:00:00 10.135.255.15
-locus091 00:00:00:00:00:00 10.135.255.16
-locus092 00:00:00:00:00:00 10.135.255.17
-locus093 00:00:00:00:00:00 10.135.255.18
-locus094 00:00:00:00:00:00 10.135.255.19
-locus095 00:00:00:00:00:00 10.135.255.20
-locus096 00:00:00:00:00:00 10.135.255.21
-locus097 00:00:00:00:00:00 10.135.255.22
-locus098 00:00:00:00:00:00 10.135.255.23
-locus099 00:00:00:00:00:00 10.135.255.24
-locus100 00:00:00:00:00:00 10.135.255.25
+locus001 00:02:c9:0e:39:1e 10.135.252.1
+locus002 00:02:c9:0e:3a:65 10.135.252.2
+locus003 00:02:c9:0e:3a:64 10.135.252.3
+locus004 00:02:c9:0e:39:26 10.135.252.4
+locus005 00:02:c9:0e:39:27 10.135.252.5
+locus006 00:02:c9:0e:3a:6c 10.135.252.6
+locus007 00:02:c9:0e:39:1e 10.135.252.7
+locus008 00:02:c9:0e:3a:65 10.135.252.8
+locus009 00:02:c9:0e:3a:64 10.135.252.9
+locus010 00:02:c9:0e:39:26 10.135.252.10
+locus011 00:02:c9:0e:39:27 10.135.252.11
+locus012 00:02:c9:0e:3a:6c 10.135.252.12
+locus013 00:02:c9:0e:39:1e 10.135.252.13
+locus014 00:02:c9:0e:3a:65 10.135.252.14
+locus015 00:02:c9:0e:3a:64 10.135.252.15
+locus016 00:02:c9:0e:39:26 10.135.252.16
+locus017 00:02:c9:0e:39:27 10.135.252.17
+locus018 00:02:c9:0e:3a:6c 10.135.252.18
+locus019 00:02:c9:0e:39:1e 10.135.252.19
+locus020 00:02:c9:0e:3a:65 10.135.252.20
+locus021 00:02:c9:0e:3a:64 10.135.252.21
+locus022 00:02:c9:0e:39:26 10.135.252.22
+locus023 00:02:c9:0e:39:27 10.135.252.23
+locus024 00:02:c9:0e:3a:6c 10.135.252.24
+locus025 00:02:c9:0e:39:1e 10.135.252.25
+locus026 00:02:c9:0e:3a:65 10.135.253.1
+locus027 00:02:c9:0e:3a:64 10.135.253.2
+locus028 00:02:c9:0e:39:26 10.135.253.3
+locus029 00:02:c9:0e:39:27 10.135.253.4
+locus030 00:02:c9:0e:3a:6c 10.135.253.5
+locus031 00:02:c9:0e:39:1e 10.135.253.6
+locus032 00:02:c9:0e:3a:65 10.135.253.7
+locus033 00:02:c9:0e:3a:64 10.135.253.8
+locus034 00:02:c9:0e:39:26 10.135.253.9
+locus035 00:02:c9:0e:39:27 10.135.253.10
+locus036 00:02:c9:0e:3a:6c 10.135.253.11
+locus037 00:02:c9:0e:39:1e 10.135.253.12
+locus038 00:02:c9:0e:3a:65 10.135.253.13
+locus039 00:02:c9:0e:3a:64 10.135.253.14
+locus040 00:02:c9:0e:39:26 10.135.253.15
+locus041 00:02:c9:0e:39:27 10.135.253.16
+locus042 00:02:c9:0e:3a:6c 10.135.253.17
+locus043 00:02:c9:0e:39:1e 10.135.253.18
+locus044 00:02:c9:0e:3a:65 10.135.253.19
+locus045 00:02:c9:0e:3a:64 10.135.253.20
+locus046 00:02:c9:0e:39:26 10.135.253.21
+locus047 00:02:c9:0e:39:27 10.135.253.22
+locus048 00:02:c9:0e:3a:6c 10.135.253.23
+locus049 00:02:c9:0e:39:1e 10.135.253.24
+locus050 00:02:c9:0e:3a:65 10.135.253.25
+locus051 00:02:c9:0e:3a:64 10.135.254.1
+locus052 00:02:c9:0e:39:26 10.135.254.2
+locus053 00:02:c9:0e:39:27 10.135.254.3
+locus054 00:02:c9:0e:3a:6c 10.135.254.4
+locus055 00:02:c9:0e:39:1e 10.135.254.5
+locus056 00:02:c9:0e:3a:65 10.135.254.6
+locus057 00:02:c9:0e:3a:64 10.135.254.7
+locus058 00:02:c9:0e:39:26 10.135.254.8
+locus059 00:02:c9:0e:39:27 10.135.254.9
+locus060 00:02:c9:0e:3a:6c 10.135.254.10
+locus061 00:02:c9:0e:39:1e 10.135.254.11
+locus062 00:02:c9:0e:3a:65 10.135.254.12
+locus063 00:02:c9:0e:3a:64 10.135.254.13
+locus064 00:02:c9:0e:39:26 10.135.254.14
+locus065 00:02:c9:0e:39:27 10.135.254.15
+locus066 00:02:c9:0e:3a:6c 10.135.254.16
+locus067 00:02:c9:0e:39:1e 10.135.254.17
+locus068 00:02:c9:0e:3a:65 10.135.254.18
+locus069 00:02:c9:0e:3a:64 10.135.254.19
+locus070 00:02:c9:0e:39:26 10.135.254.20
+locus071 00:02:c9:0e:39:27 10.135.254.21
+locus072 00:02:c9:0e:3a:6c 10.135.254.22
+locus073 00:02:c9:0e:39:1e 10.135.254.23
+locus074 00:02:c9:0e:3a:65 10.135.254.24
+locus075 00:02:c9:0e:3a:64 10.135.254.25
+locus076 00:02:c9:0e:39:26 10.135.255.1
+locus077 00:02:c9:0e:39:27 10.135.255.2
+locus078 00:02:c9:0e:3a:6c 10.135.255.3
+locus079 00:02:c9:0e:39:1e 10.135.255.4
+locus080 00:02:c9:0e:3a:65 10.135.255.5
+locus081 00:02:c9:0e:3a:64 10.135.255.6
+locus082 00:02:c9:0e:39:26 10.135.255.7
+locus083 00:02:c9:0e:39:27 10.135.255.8
+locus084 00:02:c9:0e:3a:6c 10.135.255.9
+locus085 00:02:c9:0e:39:1e 10.135.255.10
+locus086 00:02:c9:0e:3a:65 10.135.255.11
+locus087 00:02:c9:0e:3a:64 10.135.255.12
+locus088 00:02:c9:0e:39:26 10.135.255.13
+locus089 00:02:c9:0e:39:27 10.135.255.14
+locus090 00:02:c9:0e:3a:6c 10.135.255.15
+locus091 00:02:c9:0e:39:1e 10.135.255.16
+locus092 00:02:c9:0e:3a:65 10.135.255.17
+locus093 00:02:c9:0e:3a:64 10.135.255.18
+locus094 00:02:c9:0e:39:26 10.135.255.19
+locus095 00:02:c9:0e:39:27 10.135.255.20
+locus096 00:02:c9:0e:3a:6c 10.135.255.21
+locus097 00:02:c9:0e:39:1e 10.135.255.22
+locus098 00:02:c9:0e:3a:65 10.135.255.23
+locus099 00:02:c9:0e:3a:64 10.135.255.24
+locus100 00:02:c9:0e:39:26 10.135.255.25
diff --git a/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h b/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h
index bd505b328e210f65ef17eb94a0858186c6c34cc2..a903e121cdc189767bca2ea49931c609da55e3a1 100644
--- a/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h
+++ b/MAC/GCF/TM/include/GCF/TM/GCF_Fsm.h
@@ -80,6 +80,9 @@ public:
 		return (this->*itsState)(event, port); 
 	}
 
+	// Save the given event on the task queue. It will be release by the scheduler on the next state transition.
+	void queueTaskEvent(GCFEvent&	event, GCFPortInterface&	port);
+
 protected: // constructors && destructors
 	// Define TRANEvent
 	struct GCFTranEvent : public GCFEvent
@@ -112,8 +115,6 @@ protected: // constructors && destructors
   
 	// Allow the scheduler to manipulate my eventQueue.
 	friend class GCFScheduler;
-	void queueTaskEvent(GCFEvent&	event, GCFPortInterface&	port);
-//	void handleTaskQueue();
 	bool unqueueTaskEvent(GCFEvent**	eventPtr, GCFPortInterface**port);
 
 private:
diff --git a/MAC/GCF/TM/include/GCF/TM/GCF_Scheduler.h b/MAC/GCF/TM/include/GCF/TM/GCF_Scheduler.h
index ffb9490bfd0a9cd0c72ae80c11b40cf02a84a288..9826d124c286b0de6ec343d78a2f771ed3811d75 100644
--- a/MAC/GCF/TM/include/GCF/TM/GCF_Scheduler.h
+++ b/MAC/GCF/TM/include/GCF/TM/GCF_Scheduler.h
@@ -176,6 +176,7 @@ private:
 	void 				_injectEvent(GCFFsm* task, GCFEvent& event, GCFPortInterface* port, bool deepCopy=true);
 	GCFEvent::TResult	_sendEvent  (GCFFsm* task, GCFEvent& event, GCFPortInterface* port);
 	bool 				_isInEventQueue(GCFEvent*	someEvent, GCFPortInterface*    somePort);
+	void				_injectParkedEvents();
 
     // Singleton
     GCFScheduler();
@@ -200,6 +201,7 @@ private:
 		int					seqNr;
 	} waitingEvent_t;
 	list<waitingEvent_t*>	theEventQueue;
+	list<waitingEvent_t*>	itsParkedQueue;	// postponed events without a task
 
     // all registered handlers, which should be invoked (workProc) circulair
     typedef map<GCFHandler*, bool /*valid*/> HandlerMap_t;
diff --git a/MAC/GCF/TM/src/GCF_Scheduler.cc b/MAC/GCF/TM/src/GCF_Scheduler.cc
index 61a4009c7a207add7e40fceb530a66446214dd54..15cf765fe50b47a5510f9a581720d1e8554d48d6 100644
--- a/MAC/GCF/TM/src/GCF_Scheduler.cc
+++ b/MAC/GCF/TM/src/GCF_Scheduler.cc
@@ -47,6 +47,7 @@ int 				GCFScheduler::_argc = 0;
 char** 				GCFScheduler::_argv = 0;
 
 static const uint	BATCH_SIZE = 3;		// number of message handled before control is returned to other workProcs.
+static const uint	QUEUE_FACTOR = 5;	// weight factor to increment the batch_size depending on the queuesize.
 #define MAX2(a,b) ((a) > (b)) ? (a) : (b)
 #define MIN2(a,b) ((a) < (b)) ? (a) : (b)
 
@@ -331,8 +332,19 @@ void GCFScheduler::queueEvent(GCFFsm* task, GCFEvent& event, GCFPortInterface*
 		break;
 
 	case GCFEvent::NEXT_STATE:
-		LOG_DEBUG_STR("Moving event " << eventName(event) << " to eventQ of task, waiting there for state switch");
-		task->queueTaskEvent(event, *port);
+		if (task) {
+			LOG_DEBUG_STR("Moving event " << eventName(event) << " to eventQ of task, waiting there for state switch");
+			task->queueTaskEvent(event, *port);
+		}
+		else {
+			LOG_DEBUG_STR("Moving event " << eventName(event) << " to eventQ of port, waiting there for a state switch");
+			waitingEvent_t*	newWE = new waitingEvent_t;
+			newWE->task = task;
+			newWE->port = (port ? port : itsFrameworkPort);
+			newWE->seqNr = 0;
+			newWE->event = event.clone();
+			itsParkedQueue.push_back(newWE);
+		}
 		break;
 
 	case GCFEvent::HANDLED:
@@ -362,6 +374,22 @@ void GCFScheduler::_addEvent(GCFFsm*			task, GCFEvent&			event,
 	theEventQueue.push_back(newWE);
 }
 
+//
+// _injectParkedEvents()
+//
+// Injects all parked (taskless) events in FRONT of the queue
+//
+void GCFScheduler::_injectParkedEvents()
+{
+	waitingEvent_t*	parkedEvent;
+	while (!itsParkedQueue.empty()) {
+		parkedEvent = itsParkedQueue.back();
+		LOG_TRACE_STAT_STR("theEventQueue.injectParked(" << eventName(*(parkedEvent->event)) << "@" << parkedEvent->port->getName() << ") => " << theEventQueue.size() + 1);
+		theEventQueue.push_front(parkedEvent);
+		itsParkedQueue.pop_back();
+	}
+}
+
 //
 // _injectEvent(task, event, port)
 //
@@ -394,7 +422,8 @@ void GCFScheduler::handleEventQueue()
 
 	printEventQueue();
 
-	int	events2Handle = MIN2(BATCH_SIZE,theEventQueue.size()); // only handle the event that are in the queue NOW.
+	// only handle the event that are in the queue NOW.
+	int	events2Handle = MIN2(BATCH_SIZE+(theEventQueue.size()/QUEUE_FACTOR), theEventQueue.size()); 
 	while(events2Handle > 0) {
 		waitingEvent_t*		theQueueEntry = theEventQueue.front();
 
@@ -420,6 +449,8 @@ void GCFScheduler::handleEventQueue()
 			}
 			// when this command was an entry in a new state, inject the task queue into the current queue
 			if (theQueueEntry->event->signal == F_ENTRY) {
+				// inject port-events first (so that they are handled after the inserted task events).
+				_injectParkedEvents();		
 				GCFFsm*				task(theQueueEntry->task);
 				GCFEvent*			eventPtr;
 				GCFPortInterface*	portPtr;
@@ -436,15 +467,22 @@ void GCFScheduler::handleEventQueue()
 
 			case GCFEvent::NOT_HANDLED:
 				LOG_TRACE_COND_STR("DELETING event " << eventName(*(theQueueEntry->event)) << 
-							  " because return status is NOT_HANDLED");
+							  " although return status is NOT_HANDLED");
 				handled = true;
 				break;
 
 			case GCFEvent::NEXT_STATE:
-				LOG_DEBUG_STR("Moving event " << eventName(*(theQueueEntry->event)) << 
+				if (theQueueEntry->task) {
+					LOG_DEBUG_STR("Moving event " << eventName(*(theQueueEntry->event)) << 
 									" to eventQ of task, waiting there for state switch");
-				theQueueEntry->task->queueTaskEvent(*(theQueueEntry->event), *(theQueueEntry->port));
-				handled = false;
+					theQueueEntry->task->queueTaskEvent(*(theQueueEntry->event), *(theQueueEntry->port));
+				}
+				else {
+					LOG_DEBUG_STR("Moving event " << eventName(*(theQueueEntry->event)) << 
+									" to eventQ of port, waiting there for a state switch");
+					itsParkedQueue.push_back(theQueueEntry);
+					handled = false;		// do not delete it!
+				}
 				break;
 			} // switch
 		} // else
@@ -455,12 +493,14 @@ void GCFScheduler::handleEventQueue()
 			events2Handle = MAX2(events2Handle, 3);
 		}
 
-		// release memory
-		LOG_TRACE_STAT_STR("Event " << eventName(*(theQueueEntry->event)) << " in task " << taskName << 
+		if (handled) {
+			// release memory
+			LOG_TRACE_STAT_STR("Event " << eventName(*(theQueueEntry->event)) << " in task " << taskName << 
 							 " removed from queue");
-		delete theQueueEntry->event;
-		theQueueEntry->event = 0;
-		delete theQueueEntry;
+			delete theQueueEntry->event;
+			theQueueEntry->event = 0;
+			delete theQueueEntry;
+		}
 		
 		// one less to go.
 		events2Handle--;
diff --git a/MAC/GCF/TM/src/PortImpl/GCF_ITCPort.cc b/MAC/GCF/TM/src/PortImpl/GCF_ITCPort.cc
index 96fa0580d2031cf802ad6359efe950189866ce1d..cabd719f65c9174c0a8e5ae7f0cd26b05d3d3d91 100644
--- a/MAC/GCF/TM/src/PortImpl/GCF_ITCPort.cc
+++ b/MAC/GCF/TM/src/PortImpl/GCF_ITCPort.cc
@@ -154,8 +154,12 @@ GCFEvent::TResult GCFITCPort::dispatch(GCFEvent& event)
 			if (pActualEvent!=0) {
 				// client timer expired? dispatch to slave
 				if (clientIt != itsToSlaveTimerId.end()) {
-					LOG_TRACE_CALC(formatString("GCFITCPort::dispatch calling clientTask.doEvent, event@%08X", pActualEvent));
+					LOG_TRACE_CALC(formatString("GCFITCPort::dispatch:Calling clientTask.doEvent, event@%08X", pActualEvent));
 					status = itsSlaveTask.doEvent(*pActualEvent, *this);
+					if (status == GCFEvent::NEXT_STATE) {
+						LOG_TRACE_STAT_STR("GCFITCPort::dispatch:Task returned NEXT_STATE, queing " << eventName(*pActualEvent));
+						itsSlaveTask.queueTaskEvent(*pActualEvent, *this);
+					}
 					// extra check to see if it still exists:
 					clientIt = itsToSlaveTimerId.find(timerEvent.id);
 					if (clientIt != itsToSlaveTimerId.end()) {
@@ -164,20 +168,20 @@ GCFEvent::TResult GCFITCPort::dispatch(GCFEvent& event)
 				}
 				// server timer expired? dispatch to server
 				else if (serverIt != itsToContainerTimerId.end()) {
-					LOG_TRACE_CALC(formatString("GCFITCPort::dispatch calling serverTask.doEvent, event@%08X", pActualEvent));
+					LOG_TRACE_CALC(formatString("GCFITCPort::dispatch:Calling serverTask.doEvent, event@%08X", pActualEvent));
 					LOG_TRACE_CALC_STR("event = " << *pActualEvent);
 					status = _pTask->doEvent(*pActualEvent, *this);
+					if (status == GCFEvent::NEXT_STATE) {
+						LOG_TRACE_STAT_STR("GCFITCPort::dispatch:Task returned NEXT_STATE, queing " << eventName(*pActualEvent));
+						_pTask->queueTaskEvent(*pActualEvent, *this);
+					}
 					// extra check to see if it still exists:
 					serverIt = itsToContainerTimerId.find(timerEvent.id);
 					if (serverIt != itsToContainerTimerId.end()) {
 						itsToContainerTimerId.erase(serverIt);
 					}
 				}        
-				if (status == GCFEvent::NEXT_STATE) {
-					LOG_TRACE_CALC("GCFITCPort::dispatch task returned NEXT_STATE, informing scheduler");
-					return (status);
-				}
-				LOG_TRACE_CALC(formatString("GCFITCPort::dispatch deleting event attached to timer (%08X)", pActualEvent));
+				LOG_TRACE_CALC(formatString("GCFITCPort::dispatch:Deleting event attached to timer (%08X)", pActualEvent));
 				delete pActualEvent;	// delete the buffer tied to the timer.
 				LOG_TRACE_CALC("GCFITCPort::dispatch attached event deleted");
 			} // with attached event
diff --git a/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc b/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc
index 73df1fd1abafac3f29419a007bc2c0aa28a68cfb..ddf76912cd589b8d3683df5be6aa60dd9c5d7d03 100644
--- a/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc
+++ b/MAC/GCF/TM/src/PortImpl/GCF_TCPPort.cc
@@ -61,6 +61,7 @@ GCFTCPPort::GCFTCPPort(GCFTask& 	 task,
 	itsAutoRetryTimer (0),
 	itsAutoRetries	  (0),
 	itsAutoRetryItv	  (0.0),
+	itsConnectTimer	  (0),
     _broker			  (0)
 {
 	if (SPP == getType() || MSPP == getType()) {
@@ -87,6 +88,7 @@ GCFTCPPort::GCFTCPPort()
 	itsAutoRetryTimer (0),
 	itsAutoRetries	  (0),
 	itsAutoRetryItv	  (0.0),
+	itsConnectTimer	  (0),
     _broker			  (0)
 {
 }
@@ -263,7 +265,9 @@ void GCFTCPPort::autoOpen(uint	nrRetries, double	timeout, double	reconnectInterv
 //
 void GCFTCPPort::_handleDisconnect()
 {
-	LOG_TRACE_COND_STR("_handleDisco:autoOpen=" << (itsAutoOpen ? "Yes" : "No") << ", nrRetries=" << itsAutoRetries << ", retryTimer=" << itsAutoRetryTimer << ", maxTimer=" << itsAutoOpenTimer);
+	LOG_TRACE_STAT_STR("_handleDisco:autoOpen=" << (itsAutoOpen ? "Yes" : "No") << 
+			", nrRetries=" << itsAutoRetries << ", retryTimer=" << itsAutoRetryTimer << 
+			", maxTimer=" << itsAutoOpenTimer << ", connTimer=" << itsConnectTimer);
 
     setState(S_DISCONNECTED);
 	LOG_TRACE_COND_STR("_state=" << _state);
@@ -298,6 +302,10 @@ void GCFTCPPort::_handleDisconnect()
 //
 void GCFTCPPort::_handleConnect()
 {
+	LOG_TRACE_STAT_STR("_handleConn:autoOpen=" << (itsAutoOpen ? "Yes" : "No") << 
+			", nrRetries=" << itsAutoRetries << ", retryTimer=" << itsAutoRetryTimer << 
+			", maxTimer=" << itsAutoOpenTimer << ", connTimer=" << itsConnectTimer);
+
 	// stop all related timers.
 	_pTimerHandler->cancelTimer(itsConnectTimer);
 	itsConnectTimer = 0;
diff --git a/MAC/GCF/TM/src/PortImpl/GTM_FileHandler.cc b/MAC/GCF/TM/src/PortImpl/GTM_FileHandler.cc
index 008242b1bf477541c369777b00a26a77e6ac22d5..6182c16d195a06d137728016b219fd9824d0297f 100644
--- a/MAC/GCF/TM/src/PortImpl/GTM_FileHandler.cc
+++ b/MAC/GCF/TM/src/PortImpl/GTM_FileHandler.cc
@@ -81,7 +81,7 @@ void GTMFileHandler::workProc()
 	TFiles 			testFiles;
 	struct timeval	select_timeout;
 
-	//
+ 	//
 	// because select call changes the timeout value to
 	// contain the remaining time we need to set it to 10ms
 	// on every call to workProc
diff --git a/MAC/GCF/TM/src/Timer/GTM_Timer.cc b/MAC/GCF/TM/src/Timer/GTM_Timer.cc
index 37e9b81200449daaceaeab0ba0ebac05bfda55d5..3adb1ec7c73046bb3042df548315739aaff87995 100644
--- a/MAC/GCF/TM/src/Timer/GTM_Timer.cc
+++ b/MAC/GCF/TM/src/Timer/GTM_Timer.cc
@@ -56,13 +56,19 @@ GTMTimer::GTMTimer(GCFRawPort& port,
 void GTMTimer::decreaseTime()
 {
 	int64 uSec = getElapsedTime();
+	if (_port.getName() == "childControlTimer") {
+		LOG_TRACE_STAT(formatString("Timer %d(%s): Telapsed= %lld, Tleft=%llu", _id, _port.getName().c_str(), uSec, _timeLeft));
+	}
 
 	// REO: uSec < 0 ??? 
-	if ((uint64) uSec < _timeLeft || uSec < 0) {
+	if ((uSec < (int64)(_timeLeft)) || (uSec < 0)) {
 		_timeLeft -= uSec;
 		if (uSec < 0) {
 			LOG_WARN(formatString("Elapsed time of timer %d (%s) is NEGATIVE!: %llu", _id, _port.getName().c_str(), uSec));
 		}
+		if (_port.getName() == "childControlTimer") {
+			LOG_TRACE_STAT(formatString("Timer %d(%s): Tleft=>%llu", _id, _port.getName().c_str(), _timeLeft));
+		}
 		return;
 	}
 
@@ -79,6 +85,7 @@ void GTMTimer::decreaseTime()
 
 	if (_intervalTime == 0) {
 		_elapsed = true;
+		LOG_TRACE_STAT(formatString("Timer %d(%s): elapsed", _id, _port.getName().c_str()));
 		return;
 	}
 
@@ -93,6 +100,7 @@ void GTMTimer::decreaseTime()
 	}
 
 	_timeLeft = _intervalTime - timeoverflow;
+	LOG_TRACE_STAT(formatString("RepTimer %d(%s): Tleft=>%llu", _id, _port.getName().c_str(), _timeLeft));
 }
 
 void GTMTimer::saveTime()
@@ -116,6 +124,16 @@ int64 GTMTimer::getElapsedTime()
 	return (uSecDiff);
 }
 
+#if 0
+void GTMTimer::cancel()
+{
+	_canceled = true;
+	if (_port.getName() == "childControlTimer") {
+		LOG_TRACE_STAT(formatString("Cancel timer %d(childControlTimer)", _id));
+	}
+}
+#endif
+
   } // namespace TM
  } // namespace GCF
 } // namespace LOFAR
diff --git a/MAC/GCF/TM/src/Timer/GTM_TimerHandler.cc b/MAC/GCF/TM/src/Timer/GTM_TimerHandler.cc
index 35ed740745385f4a95dab1fa9275bbe5e3048cb0..ebe46775238a1f4ad47cafc6169157e5fda6e9a7 100644
--- a/MAC/GCF/TM/src/Timer/GTM_TimerHandler.cc
+++ b/MAC/GCF/TM/src/Timer/GTM_TimerHandler.cc
@@ -22,6 +22,7 @@
 
 #include <lofar_config.h>
 #include <Common/LofarLogger.h>
+#include <Common/StringUtil.h>
 
 #define LOFARLOGGER_SUBPACKAGE "Timer"
 
@@ -90,7 +91,8 @@ void GTMTimerHandler::workProc()
     pCurTimer = iter->second;
     ASSERT(pCurTimer);
     if (pCurTimer->isElapsed() || pCurTimer->isCanceled()) {
-	  //LOG_DEBUG(formatString("Deleting timer %d of port %s", iter->first, pCurTimer->getPort().getName().c_str()));
+	  LOG_TRACE_STAT(formatString("Deleting timer %d(%s),elapse=%c,cancel=%c", iter->first, pCurTimer->getPort().getName().c_str(),
+						(pCurTimer->isElapsed() ? 'Y' : 'N'), (pCurTimer->isCanceled() ? 'Y' : 'N')));
       delete pCurTimer;
       _timers.erase(iter->first);
     }
diff --git a/MAC/GCF/TM/test/tITCPort.cc b/MAC/GCF/TM/test/tITCPort.cc
index 8dee09d1bde88068c94ba075273e189077bda74d..f16c67398ae03a90dfff3a9e4ee95eb0162d7b52 100644
--- a/MAC/GCF/TM/test/tITCPort.cc
+++ b/MAC/GCF/TM/test/tITCPort.cc
@@ -21,6 +21,11 @@
 //
 //  $Id$
 
+// The program has two tasks, a server task and a client task. They connect to each other
+// by a TCP port and an ITC port. Once both connections are made the server starts sending
+// messages over one of the ports, the client always send the answer back over the other port.
+
+
 #include <lofar_config.h>
 #include <Common/LofarLogger.h>
 
@@ -32,14 +37,29 @@ namespace LOFAR {
   namespace TM {
 
 EchoPingEvent 	gPing;
+EchoPingEvent 	gPing2;
+EchoPingEvent 	gPing3;
 tClient*		gClientTask;
 GCFITCPort*		gITCPort;
 
+#define ASSERT_NOT_EQUAL(a,b) \
+	ASSERTSTR ((a).seqnr==(b).seqnr && \
+		   (a).ping_time.tv_sec==(b).ping_time.tv_sec && \
+		   (a).ping_time.tv_usec==(b).ping_time.tv_usec && \
+		   (a).someName==(b).someName, "Server: Returned message is different:" << endl << \
+			"send.ping = " << (b).seqnr << endl << \
+			"recv.ping = " << (a).seqnr << endl << \
+			"send.time = " << (b).ping_time.tv_sec << "," << (b).ping_time.tv_usec << endl << \
+			"recv.time = " << (a).ping_time.tv_sec  << "," << (a).ping_time.tv_usec << endl << \
+			"send.name = " << (b).someName << endl << \
+			"recv.name = " << (a).someName);
+
 // Constructors of both classes
 tServer::tServer(string name) : 
 	GCFTask         ((State)&tServer::openITC, name),
 	itsClientTCP	(0),
-	itsTimerPort	(0)
+	itsTimerPort	(0),
+	itsSendCount	(0)
 { 
   registerProtocol(ECHO_PROTOCOL, ECHO_PROTOCOL_STRINGS);
 }
@@ -62,7 +82,7 @@ GCFEvent::TResult	tServer::openITC(GCFEvent&	event, GCFPortInterface&	port)
 
 	switch (event.signal) {
 	case F_ENTRY: {
-		itsTimerPort = new GCFTimerPort (*this, "timerPort");
+		itsTimerPort = new GCFTimerPort (*this, "serverTimer");
 		LOG_DEBUG("Server: creating ITC stream");
 		gITCPort = new GCFITCPort(*this, *gClientTask, "ITC stream", GCFPortInterface::SAP, ECHO_PROTOCOL);
         ASSERTSTR(gITCPort, "Server: Failed to create an ITC port");
@@ -153,7 +173,7 @@ GCFEvent::TResult tServer::test1(GCFEvent& event, GCFPortInterface& port)
 
 		// send the event
 		itsClientTCP->send(gPing);
-		LOG_INFO_STR("Server: PING sent (seqnr=" << gPing.seqnr);
+		LOG_INFO_STR("### Server: PING sent over TCPport (seqnr=" << gPing.seqnr);
 		itsTimerPort->setTimer(5.0);	// max wait time for open
 		}
 	break;
@@ -166,17 +186,7 @@ GCFEvent::TResult tServer::test1(GCFEvent& event, GCFPortInterface& port)
 		itsTimerPort->cancelAllTimers();
 		EchoPingEvent ping(event);
 		LOG_DEBUG_STR ("Server:PING received, seqnr=" << ping.seqnr << endl << ping);
-		ASSERTSTR (ping.seqnr==gPing.seqnr && 
-				   ping.ping_time.tv_sec==gPing.ping_time.tv_sec && 
-				   ping.ping_time.tv_usec==gPing.ping_time.tv_usec &&
-				   ping.someName==gPing.someName, "Server: Returned message is different:" << endl <<
-					"send.ping = " << gPing.seqnr << endl <<
-					"recv.ping = " << ping.seqnr << endl <<
-					"send.time = " << gPing.ping_time.tv_sec << "," << gPing.ping_time.tv_usec << endl <<
-					"recv.time = " << ping.ping_time.tv_sec  << "," << ping.ping_time.tv_usec << endl <<
-					"send.name = " << gPing.someName << endl <<
-					"recv.name = " << ping.someName);
-
+		ASSERT_NOT_EQUAL(ping, gPing);
 		LOG_DEBUG ("Server: returned message is OK, going to test2");
 		TRAN(tServer::test2);
 		}
@@ -217,7 +227,7 @@ GCFEvent::TResult tServer::test2(GCFEvent& event, GCFPortInterface& port)
 
 		// send the event
 		gITCPort->send(gPing);
-		LOG_INFO_STR("Server: PING sent (seqnr=" << gPing.seqnr);
+		LOG_INFO_STR("### Server: PING sent over ITC port (seqnr=" << gPing.seqnr);
 		itsTimerPort->setTimer(5.0);	// max wait time for open
 		}
 	break;
@@ -230,19 +240,9 @@ GCFEvent::TResult tServer::test2(GCFEvent& event, GCFPortInterface& port)
 		itsTimerPort->cancelAllTimers();
 		EchoPingEvent ping(event);
 		LOG_DEBUG_STR ("Server:PING received, seqnr=" << ping.seqnr);
-		ASSERTSTR (ping.seqnr==gPing.seqnr && 
-				   ping.ping_time.tv_sec==gPing.ping_time.tv_sec && 
-				   ping.ping_time.tv_usec==gPing.ping_time.tv_usec &&
-				   ping.someName==gPing.someName, "Server: Returned message is different:" << endl <<
-					"send.ping = " << gPing.seqnr << endl <<
-					"recv.ping = " << ping.seqnr << endl <<
-					"send.time = " << gPing.ping_time.tv_sec << "," << gPing.ping_time.tv_usec << endl <<
-					"recv.time = " << ping.ping_time.tv_sec  << "," << ping.ping_time.tv_usec << endl <<
-					"send.name = " << gPing.someName << endl <<
-					"recv.name = " << ping.someName);
-
-		LOG_DEBUG ("Server: returned message is OK, finished testing.");
-		GCFScheduler::instance()->stop();
+		ASSERT_NOT_EQUAL (ping, gPing);
+		LOG_DEBUG ("Server: returned message is OK, going to TEST 3.");
+		TRAN(tServer::test3A);
 		}
 	break;
 
@@ -258,6 +258,546 @@ GCFEvent::TResult tServer::test2(GCFEvent& event, GCFPortInterface& port)
 	return status;
 }
 
+//
+// TEST 3A
+// The server sends 2 messages over the ITC port and responses on the returned answers with NEXT_STATE
+// When the task goes to the next state the answer must be inserted in the eventstack by the scheduler.
+//
+GCFEvent::TResult tServer::test3A(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@test3A: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		// create PingEvent
+		timeval ping_time;
+		gettimeofday(&ping_time, 0);
+
+		gPing2.seqnr     = 3021119;
+		gPing2.ping_time = ping_time;
+		gPing2.someName  = "First ping message that will be postphoned to next state on a TCPport";
+
+		// send the event
+		gITCPort->send(gPing2);
+		LOG_INFO_STR("### Server: PING2 sent over ITC (seqnr=" << gPing2.seqnr);
+		itsSendCount = 1;
+		itsTimerPort->setTimer(5.0);	// max wait time for open
+		}
+	break;
+
+	case F_TIMER: 
+		if (itsSendCount == 2) {
+			TRAN(tServer::test3B);
+			return (GCFEvent::HANDLED);
+		}
+		ASSERTSTR(false, "Server@test3A: client did not returned an answer over TCP");
+	break;
+			
+    case ECHO_PING: {
+		itsTimerPort->cancelAllTimers();
+		EchoPingEvent ping(event);
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << ping.seqnr);
+		if (itsSendCount == 1) {
+			ASSERT_NOT_EQUAL (ping, gPing2);
+			LOG_DEBUG ("Server: returned message is OK, Sending ping3 event");
+			gPing3.seqnr     = 20492186;
+			gPing3.ping_time = gPing2.ping_time;
+			gPing3.ping_time.tv_sec += 5467;
+			gPing3.someName  = "Second ping message that will be postphoned to next state on a TCPport";
+
+			// send the event
+			gITCPort->send(gPing3);
+			LOG_INFO_STR("Server: PING3 sent (seqnr=" << gPing3.seqnr);
+			itsSendCount++;
+			itsTimerPort->setTimer(5.0);	// max wait time for answer
+			return (GCFEvent::NEXT_STATE);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (ping, gPing3);
+		LOG_DEBUG ("Server: returned message is OK, asking for postphone and switching to new state");
+		itsTimerPort->setTimer(0.1);	// do state switch on timer.
+		return (GCFEvent::NEXT_STATE);
+
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@test3A: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// TEST 3B
+//
+// Expecting 2 messages of the previous test.
+GCFEvent::TResult tServer::test3B(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@test3B: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		itsSendCount = 0;
+		LOG_INFO("### Server: waiting for postphoned ping-events over TCP ...");
+		itsTimerPort->setTimer(5.0);	// max wait time for open
+		}
+	break;
+
+	case F_TIMER: 
+		if (itsSendCount == 2) {
+			LOG_DEBUG("Postphonig over TCP is OK, trying the same over ITC...");
+			TRAN(tServer::test4A);
+			return (GCFEvent::HANDLED);
+		}
+		ASSERTSTR(false, "Server@test3B: Scheduler did not inject requested messages");
+	break;
+			
+    case ECHO_PING: {
+		itsTimerPort->cancelAllTimers();
+		EchoPingEvent ping(event);
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << ping.seqnr);
+		if (itsSendCount == 0) {
+			ASSERT_NOT_EQUAL (ping, gPing2);
+			LOG_DEBUG ("Server: returned postphoned message is OK");
+			itsTimerPort->setTimer(5.0);	// max wait time for answer
+			itsSendCount++;
+			return (GCFEvent::HANDLED);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (ping, gPing3);
+		LOG_DEBUG ("Server: returned message is OK, asking for postphone and switching to new state");
+		itsTimerPort->setTimer(0.1);	// do state switch on timer.
+		itsSendCount++;
+		return (GCFEvent::HANDLED);
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@test3A: default");
+		break;
+	}
+
+	return status;
+}
+//
+// TEST 4A
+//
+// The server sends 2 messages over the TCP port and responses on the returned answers with NEXT_STATE
+// When the task goes to the next state the answer must be inserted in the eventstack by the scheduler.
+GCFEvent::TResult tServer::test4A(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@test4A: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		// create PingEvent
+		timeval ping_time;
+		gettimeofday(&ping_time, 0);
+
+		gPing2.seqnr     = 9111203;
+		gPing2.ping_time = ping_time;
+		gPing2.someName  = "First ping message that will be postphoned to next state on a ITCport";
+
+		// send the event
+		itsClientTCP->send(gPing2);
+		LOG_INFO_STR("### Server: PING2 sent over TCP (seqnr=" << gPing2.seqnr);
+		itsSendCount = 1;
+		itsTimerPort->setTimer(5.0);	// max wait time for open
+		}
+	break;
+
+	case F_TIMER: 
+		if (itsSendCount == 2) {
+			TRAN(tServer::test4B);
+			return (GCFEvent::HANDLED);
+		}
+		ASSERTSTR(false, "Server@test4A: client did not returned an answer over ITC");
+	break;
+			
+    case ECHO_PING: {
+		itsTimerPort->cancelAllTimers();
+		EchoPingEvent ping(event);
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << ping.seqnr);
+		if (itsSendCount == 1) {
+			ASSERT_NOT_EQUAL (ping, gPing2);
+			LOG_DEBUG ("Server: returned message is OK, Sending ping3 event");
+			gPing3.seqnr     = 68129402;
+			gPing3.someName  = "Second ping message that will be postphoned to next state on a ITCport";
+
+			// send the event
+			itsClientTCP->send(gPing3);
+			LOG_INFO_STR("Server: PING3 sent (seqnr=" << gPing3.seqnr);
+			itsSendCount++;
+			itsTimerPort->setTimer(5.0);	// max wait time for answer
+			return (GCFEvent::NEXT_STATE);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (ping, gPing3);
+		LOG_DEBUG ("Server: returned message is OK, asking for postphone and switching to new state");
+		itsTimerPort->setTimer(0.1);	// do state switch on timer.
+		return (GCFEvent::NEXT_STATE);
+
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@test3A: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// TEST 4B
+//
+// Expecting 2 messages of the previous test.
+GCFEvent::TResult tServer::test4B(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@test4B: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		itsSendCount = 0;
+		LOG_INFO("### Server: waiting for postphoned ping-events over ITC ...");
+		itsTimerPort->setTimer(5.0);	// max wait time for open
+		}
+	break;
+
+	case F_TIMER: 
+		if (itsSendCount == 2) {
+			LOG_DEBUG("Test 4B passed, going to test 5A");
+			TRAN(tServer::test5A);
+			return (GCFEvent::HANDLED);
+		}
+		ASSERTSTR(false, "Server@test4B: Scheduler did not inject requested messages");
+	break;
+			
+    case ECHO_PING: {
+		itsTimerPort->cancelAllTimers();
+		EchoPingEvent ping(event);
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << ping.seqnr);
+		if (itsSendCount == 0) {
+			ASSERT_NOT_EQUAL (ping, gPing2);
+			LOG_DEBUG ("Server: returned postphoned message is OK");
+			itsTimerPort->setTimer(5.0);	// max wait time for answer
+			itsSendCount++;
+			return (GCFEvent::HANDLED);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (ping, gPing3);
+		LOG_DEBUG ("Server: returned message is OK, asking for postphone and switching to new state");
+		itsTimerPort->setTimer(0.1);	// do state switch on timer.
+		itsSendCount++;
+		return (GCFEvent::HANDLED);
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@test4A: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// TEST 5A
+// The server generates 2 timer events on the TCPport timer and forwards them to the next state.
+//
+GCFEvent::TResult tServer::test5A(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@test5A: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		// create PingEvent
+		itsTimerPort->setTimer(0.1, 0.0, (void*)(&gPing2));
+		itsTimerPort->setTimer(0.2, 0.0, (void*)(&gPing3));
+		itsTimerPort->setTimer(1.0);
+		LOG_INFO_STR("### Server: initiated 2 timer events with a ping message connected to it, waiting for timers");
+		itsSendCount = 0;
+		}
+	break;
+
+	case F_TIMER: 
+		itsSendCount++;
+		if (itsSendCount > 2) {
+			LOG_DEBUG("Postphoned 2 timer events, going to next state and wait there for them to receive them");
+			TRAN(tServer::test5B);
+			return (GCFEvent::HANDLED);
+		}
+		LOG_DEBUG("Postphoning F_TIMER event...");
+		return (GCFEvent::NEXT_STATE);
+	break;
+			
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@test5A: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// TEST 5B
+//
+// Expecting 2 TIMER messages of the previous test.
+GCFEvent::TResult tServer::test5B(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@test5B: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		itsSendCount = 0;
+		itsTimerPort->setTimer(5.0);	// max wait time for forwarded events
+		}
+	break;
+
+	case F_TIMER:  {
+		GCFTimerEvent& timerEvent=static_cast<GCFTimerEvent&>(event);
+		EchoPingEvent* pingPtr = (EchoPingEvent*)timerEvent.arg;
+		ASSERTSTR(pingPtr, "Expected an ping event attached to the timer event, bailing out...");
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << pingPtr->seqnr);
+		if (itsSendCount == 0) {
+			ASSERT_NOT_EQUAL (*pingPtr, gPing2);
+			LOG_DEBUG ("Server: returned postphoned message is OK");
+			itsSendCount++;
+			return (GCFEvent::HANDLED);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (*pingPtr, gPing3);
+		LOG_DEBUG ("Server: forwarding timer events over a timerPort OK, trying it over TCP...");
+		itsTimerPort->cancelAllTimers();
+		TRAN(tServer::forwardOverTCP);
+		return (GCFEvent::HANDLED);
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@test5b: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// forwardOverTCP
+// The server generates 2 timer events on the TCPport timer and forwards them to the next state.
+//
+GCFEvent::TResult tServer::forwardOverTCP(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@forwardOverTCP: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		// create PingEvent
+		itsClientTCP->setTimer(0.1, 0.0, (void*)(&gPing2));
+		itsClientTCP->setTimer(0.2, 0.0, (void*)(&gPing3));
+		itsTimerPort->setTimer(1.0);
+		LOG_INFO_STR("### Server: initiated 2 timer events with a ping message connected to it, waiting for timers");
+		itsSendCount = 0;
+		}
+	break;
+
+	case F_TIMER: 
+		itsSendCount++;
+		if (itsSendCount > 2) {
+			LOG_DEBUG("Postphoned 2 timer events, going to next state and wait there for them to receive them");
+			TRAN(tServer::delayedOverTCP);
+			return (GCFEvent::HANDLED);
+		}
+		LOG_DEBUG("Postphoning F_TIMER event...");
+		return (GCFEvent::NEXT_STATE);
+	break;
+			
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@forwardOverTCP: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// delayedOverTCP
+// Expecting 2 TIMER messages of the previous test.
+//
+GCFEvent::TResult tServer::delayedOverTCP(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@delayedOverTCP: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		itsSendCount = 0;
+		itsTimerPort->setTimer(5.0);	// max wait time for forwarded events
+		}
+	break;
+
+	case F_TIMER:  {
+		GCFTimerEvent& timerEvent=static_cast<GCFTimerEvent&>(event);
+		EchoPingEvent* pingPtr = (EchoPingEvent*)timerEvent.arg;
+		ASSERTSTR(pingPtr, "Expected an ping event attached to the timer event, bailing out...");
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << pingPtr->seqnr);
+		if (itsSendCount == 0) {
+			ASSERT_NOT_EQUAL (*pingPtr, gPing2);
+			LOG_DEBUG ("Server: returned postphoned message is OK");
+			itsSendCount++;
+			return (GCFEvent::HANDLED);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (*pingPtr, gPing3);
+		LOG_DEBUG ("Server: forwarding timer events over a TCP OK, trying it over ITC...");
+		itsTimerPort->cancelAllTimers();
+		TRAN(tServer::forwardOverITC);
+		return (GCFEvent::HANDLED);
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@delaydOverTCP: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// forwardOverITC
+// The server generates 2 timer events on the ITCport timer and forwards them to the next state.
+//
+GCFEvent::TResult tServer::forwardOverITC(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@forwardOverITC: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		// create PingEvent
+		gITCPort->setTimer(0.1, 0.0, (void*)(&gPing2));
+		gITCPort->setTimer(0.2, 0.0, (void*)(&gPing3));
+		itsTimerPort->setTimer(1.0);
+		LOG_INFO_STR("### Server: initiated 2 timer events with a ping message connected to it, waiting for timers");
+		itsSendCount = 0;
+		}
+	break;
+
+	case F_TIMER: 
+		itsSendCount++;
+		if (itsSendCount > 2) {
+			LOG_DEBUG("Postphoned 2 timer events, going to next state and wait there for them to receive them");
+			TRAN(tServer::delayedOverITC);
+			return (GCFEvent::HANDLED);
+		}
+		LOG_DEBUG("Postphoning F_TIMER event...");
+		return (GCFEvent::NEXT_STATE);
+	break;
+			
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@forwardOverITC: default");
+		break;
+	}
+
+	return status;
+}
+
+//
+// delayedOverITC
+// Expecting 2 TIMER messages of the previous test.
+//
+GCFEvent::TResult tServer::delayedOverITC(GCFEvent& event, GCFPortInterface& port)
+{
+	GCFEvent::TResult status = GCFEvent::HANDLED;
+	LOG_DEBUG_STR ("Server@delayedOverITC: " << eventName(event.signal) << "@" << port.getName());
+
+	switch (event.signal) {
+	case F_ENTRY: {
+		itsSendCount = 0;
+		itsTimerPort->setTimer(5.0);	// max wait time for forwarded events
+		}
+	break;
+
+	case F_TIMER:  {
+		GCFTimerEvent& timerEvent=static_cast<GCFTimerEvent&>(event);
+		EchoPingEvent* pingPtr = (EchoPingEvent*)timerEvent.arg;
+		ASSERTSTR(pingPtr, "Expected an ping event attached to the timer event, bailing out...");
+		LOG_DEBUG_STR ("Server:PING received, seqnr=" << pingPtr->seqnr);
+		if (itsSendCount == 0) {
+			ASSERT_NOT_EQUAL (*pingPtr, gPing2);
+			LOG_DEBUG ("Server: returned postphoned message is OK");
+			itsSendCount++;
+			return (GCFEvent::HANDLED);
+		}
+		// pingevent 3 returned.
+		ASSERT_NOT_EQUAL (*pingPtr, gPing3);
+		LOG_DEBUG ("Server: forwarding timer events over a ITC OK, ALL TESTED PASSED SUCCESSFUL!!!");
+		GCFScheduler::instance()->stop();
+		return (GCFEvent::HANDLED);
+		}
+	break;
+
+	case F_DISCONNECTED:
+		ASSERTSTR(false, "Server: Received an DISCO");
+	break;
+
+	default:
+		LOG_DEBUG("Server@delaydOverITC: default");
+		break;
+	}
+
+	return status;
+}
+
+
+// -------------------- CLIENT TASK --------------------
+
 // Client::initial
 //
 // wait till server gave me my ITCport.
@@ -269,7 +809,7 @@ GCFEvent::TResult	tClient::initial(GCFEvent&	event, GCFPortInterface&	port)
 	switch (event.signal) {
 	case F_ENTRY:
 		LOG_DEBUG("Client: waiting for ITC port to be set by server");
-		itsTimerPort = new GCFTimerPort (*this, "timerPort");
+		itsTimerPort = new GCFTimerPort (*this, "clientTimer");
 		// Note: the 'setITC' call will initiate an F_TIMER event.
 	break;
 
diff --git a/MAC/GCF/TM/test/tITCPort.h b/MAC/GCF/TM/test/tITCPort.h
index 33934749bfa2f3a5baed2514709fb32fee1decea..92f3ae10bda6eaaed505bc7f0a4fd6c4f32eec30 100644
--- a/MAC/GCF/TM/test/tITCPort.h
+++ b/MAC/GCF/TM/test/tITCPort.h
@@ -50,11 +50,22 @@ public:
 	GCFEvent::TResult wait4TCP (GCFEvent& e, GCFPortInterface& p);
 	GCFEvent::TResult test1 (GCFEvent& e, GCFPortInterface& p);
 	GCFEvent::TResult test2 (GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult test3A(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult test3B(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult test4A(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult test4B(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult test5A(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult test5B(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult forwardOverTCP(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult delayedOverTCP(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult forwardOverITC(GCFEvent& e, GCFPortInterface& p);
+	GCFEvent::TResult delayedOverITC(GCFEvent& e, GCFPortInterface& p);
 
 private:
 	GCFTCPPort*		itsClientTCP;
 	GCFITCPort*		itsITCPort;
 	GCFTimerPort*	itsTimerPort;
+	int				itsSendCount;
 };
 
 class tClient : public GCFTask
diff --git a/SAS/OTDB/bin/makeDefaultTemplates.py b/SAS/OTDB/bin/makeDefaultTemplates.py
index 057f901633a0c1adc23637e40918a35decde789a..7dfb277918f42c523db4ad4ea8e220c28a999ab9 100755
--- a/SAS/OTDB/bin/makeDefaultTemplates.py
+++ b/SAS/OTDB/bin/makeDefaultTemplates.py
@@ -40,7 +40,11 @@ def createNewDefaultTemplate(orgTmplID, newMasterTmplID, orgTmplInfo):
     newTmplID = otdb.query("select * from copyTree(1, %s)" % newMasterTmplID).getresult()[0][0]
     print "   copy has ID: %s" % newTmplID
     otdb.query("select * from setDescription(1, %s, '%s')" % (newTmplID, orgTmplInfo['description']))
-    otdb.query("select * from assignTemplateName(1, %s, '_new_ %s')" % (newTmplID, orgTmplInfo['treeName']))
+    # set the old default template state to obsolete (1200)
+    otdb.query("select * from settreestate(1, %s, '1200')" % (orgTmplID))
+    # rename the old template with a '# ' before its original name
+    otdb.query("select * from assignTemplateName(1, %s, '# %s')" % (orgTmplID, orgTmplInfo['treeName']))
+    otdb.query("select * from assignTemplateName(1, %s, '%s')" % (newTmplID, orgTmplInfo['treeName']))
 
     # loop over all values that were changed in the old template
     treeIdentification = "%s%d" % (orgTmplInfo['nodeName'], orgTmplInfo['version'])
@@ -159,18 +163,20 @@ if __name__ == '__main__':
     dfltTmplInfo = {}
     dfltTemplateIDs = otdb.query("select * from getDefaultTemplates()").dictresult()
     for dfltTemplate in dfltTemplateIDs:
-        description = otdb.query("select description from getTreeInfo(%s, 'false')" % dfltTemplate['treeid']).getresult()[0][0]
-        nodeDefID   = otdb.query("select * from getTopNode(%s)" % dfltTemplate['treeid']).dictresult()[0]
-        nodeInfo    = otdb.query("select * from getVICnodedef(%s)" % nodeDefID['paramdefid']).dictresult()
-        dfltTmplInfo[dfltTemplate['treeid']] = \
-                {'componentID' : nodeDefID['paramdefid'], \
-                 'nodeID'      : nodeDefID['nodeid'], \
-                 'nodeName'    : nodeDefID['name'], \
-                 'version'     : nodeInfo[0]['version'], \
-                 'treeName'    : dfltTemplate['name'], \
-                 'description' : description}
-        print "   DefaultTemplate %s starts at %s (version %d) : %s" % \
-               (dfltTemplate['treeid'], nodeDefID['name'], nodeInfo[0]['version'], dfltTemplate['name'])
+        state       = otdb.query("select state from getTreeInfo(%s, 'false')" % dfltTemplate['treeid']).getresult()[0][0]
+        if state != 1200 :
+            description = otdb.query("select description from getTreeInfo(%s, 'false')" % dfltTemplate['treeid']).getresult()[0][0]
+            nodeDefID   = otdb.query("select * from getTopNode(%s)" % dfltTemplate['treeid']).dictresult()[0]
+            nodeInfo    = otdb.query("select * from getVICnodedef(%s)" % nodeDefID['paramdefid']).dictresult()
+            dfltTmplInfo[dfltTemplate['treeid']] = \
+                    {'componentID' : nodeDefID['paramdefid'], \
+                     'nodeID'      : nodeDefID['nodeid'], \
+                     'nodeName'    : nodeDefID['name'], \
+                     'version'     : nodeInfo[0]['version'], \
+                     'treeName'    : dfltTemplate['name'], \
+                     'description' : description}
+            print "   DefaultTemplate %s starts at %s (version %d) : %s" % \
+                   (dfltTemplate['treeid'], nodeDefID['name'], nodeInfo[0]['version'], dfltTemplate['name'])
 
     # second step create temporarely parsetfiles from all DefaultTemplates
     print "=> Creating temporarely parsetfiles from the DefaultTemplates..."