Index: /trunk/FACT++/src/DimDescriptionService.h
===================================================================
--- /trunk/FACT++/src/DimDescriptionService.h	(revision 10569)
+++ /trunk/FACT++/src/DimDescriptionService.h	(revision 10570)
@@ -42,4 +42,3 @@
 };
 
-
 #endif
Index: /trunk/FACT++/src/DimNetwork.cc
===================================================================
--- /trunk/FACT++/src/DimNetwork.cc	(revision 10569)
+++ /trunk/FACT++/src/DimNetwork.cc	(revision 10570)
@@ -14,7 +14,4 @@
 void StateClient::infoHandler()
 {
-    // Make sure getTimestamp is called _before_ getTimestampMillisecs
-    getInfo()->getTimestamp();
-
     DimInfo *curr = getInfo(); // get current DimInfo address
     if (!curr)
@@ -25,7 +22,10 @@
         const bool disconnected = fInfoState.getSize()==0;
 
+        // Make sure getTimestamp is called _before_ getTimestampMillisecs
+        const int tsec = fInfoState.getTimestamp();
+        const int tms  = fInfoState.getTimestampMillisecs();
+
         fState     = disconnected ? -2 : fInfoState.getQuality();
-        fStateTime = Time(fInfoState.getTimestamp(),
-                          fInfoState.getTimestampMillisecs()*1000);
+        fStateTime = Time(tsec, tms*1000);
 
         const string name = fInfoState.getName();
Index: /trunk/FACT++/src/DimServerList.cc
===================================================================
--- /trunk/FACT++/src/DimServerList.cc	(revision 10569)
+++ /trunk/FACT++/src/DimServerList.cc	(revision 10570)
@@ -47,7 +47,4 @@
 void DimServerList::infoHandler()
 {
-    // Make sure getTimestamp is called _before_ getTimestampMillisecs
-    getInfo()->getTimestamp();
-
     if (getInfo()!=&fDimServers)
         return;
Index: /trunk/FACT++/src/DimServiceInfoList.cc
===================================================================
--- /trunk/FACT++/src/DimServiceInfoList.cc	(revision 10569)
+++ /trunk/FACT++/src/DimServiceInfoList.cc	(revision 10570)
@@ -120,4 +120,6 @@
 void DimServiceInfoList::RemoveServer(const string &s)
 {
+    cout << "Check for: " << s << endl;
+
     const ServiceInfoList::iterator v = fServiceInfoList.find(s);
     if (v==fServiceInfoList.end())
@@ -173,7 +175,4 @@
 void DimServiceInfoList::infoHandler()
 {
-    // Make sure getTimestamp is called _before_ getTimestampMillisecs
-    getInfo()->getTimestamp();
-
     // Get the name of the service
     const string svc = getInfo()->getName();
Index: /trunk/FACT++/src/EventDim.h
===================================================================
--- /trunk/FACT++/src/EventDim.h	(revision 10569)
+++ /trunk/FACT++/src/EventDim.h	(revision 10570)
@@ -58,6 +58,9 @@
     Time GetTime() const
     {
-        return Time(const_cast<EventDim*>(this)->getTimestamp(),
-                    const_cast<EventDim*>(this)->getTimestampMillisecs());
+        // Must be in exactly this order!
+        const int tsec = const_cast<EventDim*>(this)->getTimestamp();
+        const int tms  = const_cast<EventDim*>(this)->getTimestampMillisecs();
+
+        return Time(tsec, tms*1000);
     }
 };
Index: /trunk/FACT++/src/MessageDim.cc
===================================================================
--- /trunk/FACT++/src/MessageDim.cc	(revision 10569)
+++ /trunk/FACT++/src/MessageDim.cc	(revision 10570)
@@ -126,14 +126,11 @@
 void MessageDimRX::infoHandler()
 {
-    // Make sure getTimestamp is called _before_ getTimestampMillisecs
-    getInfo()->getTimestamp();
-
     if (getInfo()!=&fDimMessage)
         return;
 
-    const string name   = getInfo()->getName();
+    const string name   = fDimMessage.getName();
     const string server = name.substr(0, name.find_first_of('/'));
 
-    fConnected = getInfo()->getSize()!=0;
+    fConnected = fDimMessage.getSize()!=0;
 
     // The server is diconnected. Do nothing
@@ -147,12 +144,16 @@
 
     // skip all messages with a severity smaller than the minimum log level
-    if (getInfo()->getQuality()<fMinLogLevel)
+    if (fDimMessage.getQuality()<fMinLogLevel)
         return;
 
     stringstream msg;
-    msg << server << ": " << getInfo()->getString();
+    msg << server << ": " << fDimMessage.getString();
+
+    // Make sure getTimestamp is called _before_ getTimestampMillisecs
+    // Must be in exactly this order!
+    const int tsec = fDimMessage.getTimestamp();
+    const int tms  = fDimMessage.getTimestampMillisecs();
 
     // Write the received message to the output
-    fMsg.Write(Time(getInfo()->getTimestamp(), getInfo()->getTimestampMillisecs()*1000),
-               msg.str().c_str(), getInfo()->getQuality());
+    fMsg.Write(Time(tsec, tms*1000), msg.str().c_str(), fDimMessage.getQuality());
 }
Index: /trunk/FACT++/src/dataLogger.cc
===================================================================
--- /trunk/FACT++/src/dataLogger.cc	(revision 10569)
+++ /trunk/FACT++/src/dataLogger.cc	(revision 10570)
@@ -755,6 +755,4 @@
 		return;
 
-        getInfo()->getTimestamp();
-
         DimInfo* I = getInfo();
 	SubscriptionsListType::iterator x;
@@ -799,5 +797,8 @@
 	if (I->getSize() <= 0)
 		return;
-	//check that the message has been updated by something, i.e. must be different from its initial value
+
+        // Make sure that getTimestampMillisecs is NEVER called before
+        // getTimestamp is properly called
+        // check that the message has been updated by something, i.e. must be different from its initial value
 	if (I->getTimestamp() == 0)
 		return;
