diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp
index d62307aa72aefef68ae639469ef1df58223eaa6d..3ac6c75208ef78af41e6fbc447b3a27b6772095b 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.cpp
+++ b/simulators/c++2/src_simulator/sim/Simulator.cpp
@@ -859,9 +859,8 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
 	if(transLET!=0 && transLET->getCommand()->getTask()->getIsDaemon()==true){
 	  if(transLET->getStartTime() >= deviceLET->getSimulatedTime()){
 	    // std::cout<<"bigger time"<<std::endl;
-	    bool isFinish=true;
 	    if(_simComp->getNonDaemonTaskList().empty())
-	      isFinish=false;
+	      break;
 	    for(TaskList::const_iterator i=_simComp->getNonDaemonTaskList().begin(); i != _simComp->getNonDaemonTaskList().end(); ++i){	 
 	      //  std::cout<<"non dameon task"<<(*i)->toString()<<" state is "<<(*i)->getState()<<(*i)->getCurrCommand()->toString()<<std::endl;
 	      if((*i)->getState()!=3){
@@ -1011,8 +1010,10 @@ bool Simulator::simulate(TMLTransaction*& oLastTrans){
   }
 
   bool aSimCompleted = ( transLET==0  && !_simComp->getStoppedOnAction());
-  if(isFinish==true)
+  if(isFinish==true){
+    // std::cout<<"terminated!!!"<<std::endl;
     aSimCompleted = true;
+  }
 
   if (aSimCompleted){
 #ifdef LISTENERS_ENABLED