diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp
index f7369c8c41a629b8807ed87334a9396005db5fe2..ce22bd8feabc21b108d19fb7e0df65afaad44a78 100644
--- a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp
+++ b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp
@@ -68,7 +68,7 @@ TMLCommand* TMLDelayCommand::prepareNextTransaction(){
 	}
 
 	if (_progress==0){
-	  (_task->*_actionFunc)();
+	  _length = (_task->*_actionFunc)();
 //    _execTimes++;  this will recognize delay transaction one more time so remove it
     		if (_length==0){
     			//std::cout << "ExeciCommand len==0 " << std::endl;
@@ -98,6 +98,7 @@ std::string TMLDelayCommand::toString() const{
         outp << ": IdleDL in "  << TMLCommand::toString();
     return outp.str();
 }
+
 std::string TMLDelayCommand::toShortString() const{
 	std::ostringstream outp;
     if(_isActiveDelay)
diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h
index d0337f64a1da896b0c9075ddaa54a673db66d94b..9492ae163babeef805fd18b95961fa1b466ef253 100644
--- a/simulators/c++2/src_simulator/definitions.h
+++ b/simulators/c++2/src_simulator/definitions.h
@@ -684,7 +684,7 @@ typedef std::deque<Parameter* > ParamQueue;
 ///Type of member function pointer used to indicate a function encapsulating a condition (for TMLChoiceCommand)
 typedef unsigned int (TMLTask::*CondFuncPointer) ();
 ///Type of member function pointer used to indicate a function encapsulating an action (for TMLActionCommand)
-typedef void (TMLTask::*ActionFuncPointer) ();
+typedef int (TMLTask::*ActionFuncPointer) ();
 ///Type of member function pointer used to indicate a function encapsulating a condition (for TMLChoiceCommand)
 typedef TMLTime (TMLTask::*LengthFuncPointer) ();
 ///Type of pointer to indicate a function encapsulating a TEPE condition
diff --git a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
index 83f12fd03d0af317f8402b9d7f60adf0e0520ae3..fdd982c60d9d928d02a3fc1230398154aa3919ff 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
@@ -557,19 +557,21 @@ public class MappedSystemCTask {
                 comment = action;
                 action += "\nif (tmpDelayxy==0) tmpDelayxy=1;\n";
                 if (delay.getMinDelay().equals(delay.getMaxDelay())) {
-                    if (!delay.getActiveDelay()){
-                        action += "_endLastTransaction+=tmpDelayxy"; // Take all delay totally idle for x units of time
+                    if (delay.getActiveDelay()){
+                        //action += "_endLastTransaction+=tmpDelayxy;"; // Take all delay totally idle for x units of time
+                        action += "return tmpDelayxy;";
                     } else {
-                        action += "_endLastTransaction+=0"; //consumes cycles
+                        action += "_endLastTransaction+=0;\nreturn 1;"; //consumes cycles
                     }
 
                     delayLen = delay.getMaxDelay() + "*" + masterClockFreq + delay.getMasterClockFactor();
                 } else {
                     action += "TMLTime tmpDelayxx = " + delay.getMinDelay() + "*" + masterClockFreq + delay.getMasterClockFactor() + ";\nif (tmpDelayxx==0) tmpDelayxx=1;\n";
-                    if (!delay.getActiveDelay()){
-                        action += "_endLastTransaction+= myrand(tmpDelayxx,tmpDelayxy)"; // Take all delay totally idle for x units of time
+                    if (delay.getActiveDelay()){
+                        //action += "_endLastTransaction+= myrand(tmpDelayxx,tmpDelayxy)"; // Take all delay totally idle for x units of time
+                        action += "return myrand(tmpDelayxx,tmpDelayxy)";
                     } else {
-                        action += "_endLastTransaction+=0"; //consumes cycles
+                        action += "_endLastTransaction+=0;\nreturn 1;"; //consumes cycles
                     }
                     java.util.Random r = new  java.util.Random();
                     delayLen = String.valueOf(r.nextInt(Integer.valueOf(delay.getMaxDelay())-Integer.valueOf(delay.getMinDelay())) + Integer.valueOf(delay.getMinDelay())) + "*" + masterClockFreq + delay.getMasterClockFactor();
@@ -587,7 +589,8 @@ public class MappedSystemCTask {
                 hcode += "TMLDelayCommand " + cmdName + SCCR;
                 initCommand += "," + cmdName + "(" + idString + ",this,"+ delayLen +",(ActionFuncPointer)&" + reference + "::" + cmdName + "_func, " + getFormattedLiveVarStr(currElem) + ", " + delay.getActiveDelay() + ")" + CR;
                 nextCommand = cmdName + ".setNextCommand(array(1,(TMLCommand*)" + makeCommands(currElem.getNextElement(0), false, retElement, null) + "));\n";
-                functions += "void " + reference + "::" + cmdName + "_func(){\n#ifdef ADD_COMMENTS\naddComment(new Comment(_endLastTransaction,0," + commentNum + "));\n#endif\n" + modifyString(addSemicolonIfNecessary(action)) + CR;
+                functions += "TMLTime " + reference + "::" + cmdName + "_func(){\n#ifdef ADD_COMMENTS\naddComment(new Comment" +
+                        "(_endLastTransaction,0," + commentNum + "));\n#endif\n" + modifyString(addSemicolonIfNecessary(action)) + CR;
                 //functions+="return 0"+ SCCR;
 //                functions += "std::ostringstream ss" + SCCR + "\n";
 //                functions += "if(" + cmdName + ".getCurrTransaction() != NULL) " + cmdName + ".getCurrTransaction()->lastParams = ss.str()" +
@@ -595,7 +598,7 @@ public class MappedSystemCTask {
                 functions += "}" + CR2;
                 commentText += "_comment[" + commentNum + "]=std::string(\"Delay " + comment + "\");\n";
                 commentNum++;
-                functionSig += "void " + cmdName + "_func()" + SCCR;
+                functionSig += "TMLTime " + cmdName + "_func()" + SCCR;
             }
 
         } else if (currElem instanceof TMLExecI) {
diff --git a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java
index 5d4d11d8de0a93c65b51686f20275f82c4a9c77a..89957ff7a06a48f784ffc1a80bdb291b3cffb0e6 100644
--- a/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java
+++ b/src/main/java/ui/avatarsmd/AvatarSMDSendSignal.java
@@ -74,10 +74,10 @@ public class AvatarSMDSendSignal extends AvatarSMDBasicCanBeDisabledComponent /*
 
 	private ConcurrentHashMap<String, String> latencyVals;
 
-	protected int latencyX=30;
-	protected int latencyY=25;
-	protected int textWidth=10;
-	protected int textHeight=20;
+	protected int latencyX = 30;
+	protected int latencyY = 25;
+	protected int textWidth = 10;
+	protected int textHeight = 20;
 
     protected int stateOfError = 0; // Not yet checked