Index: /trunk/FACT++/src/Main.h
===================================================================
--- /trunk/FACT++/src/Main.h	(revision 16736)
+++ /trunk/FACT++/src/Main.h	(revision 16737)
@@ -200,5 +200,6 @@
         // Hopefully checking the readline (see Threed) should fix
         // that -- difficult to test.)
-        while (io_service.GetCurrentState()<StateMachineImp::kSM_Ready && !shell.IsStopped())
+        while ((io_service.GetCurrentState()<StateMachineImp::kSM_Ready ||
+                !io_service.MessageQueueEmpty()) && !shell.IsStopped())
             usleep(1);
 
@@ -212,4 +213,6 @@
             shell.Execute(*it, args);
 
+        cout << "==============="<< endl;
+
         // Run the shell if no immediate exit was requested
         if (!conf.Get<bool>("quit"))
Index: /trunk/FACT++/src/MessageDim.h
===================================================================
--- /trunk/FACT++/src/MessageDim.h	(revision 16736)
+++ /trunk/FACT++/src/MessageDim.h	(revision 16737)
@@ -23,4 +23,6 @@
 
     void SetDebug(bool b=true) { fDebug=b; }
+
+    bool MessageQueueEmpty() const { return fMsgQueue.empty(); }
 };
 
Index: /trunk/FACT++/src/MessageImp.h
===================================================================
--- /trunk/FACT++/src/MessageImp.h	(revision 16736)
+++ /trunk/FACT++/src/MessageImp.h	(revision 16737)
@@ -69,4 +69,6 @@
     std::ostream &operator()() const { return fOut; }
     std::ostream &Out() const { return fOut; }
+
+    virtual bool MessageQueueEmpty() const { return true; }
 };
 
Index: /trunk/FACT++/src/StateMachineDim.h
===================================================================
--- /trunk/FACT++/src/StateMachineDim.h	(revision 16736)
+++ /trunk/FACT++/src/StateMachineDim.h	(revision 16737)
@@ -100,4 +100,6 @@
 
     bool AddStateName(const int state, const std::string &name, const std::string &doc="");
+
+    bool MessageQueueEmpty() const { return DimLog::fLog.MessageQueueEmpty(); }
 };
 
