diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp
index 58880e49ca2125d006e03cdbf299f66a1ac4a9cb..3ebf2f69e148052cc9ffb96b75dce3929ec2b209 100644
--- a/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp
+++ b/simulators/c++2/src_simulator/app/TMLDelayCommand.cpp
@@ -43,7 +43,7 @@ Ludovic Apvrille, Renaud Pacalet
 #include <TMLTransaction.h>
 #include <SimComponents.h>
 //#include <CommandListener.h>
-TMLDelayCommand::TMLDelayCommand(ID iID, TMLTask* iTask,TMLLength iStatLength, ActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay):TMLCommand(iID, iTask, 1, 1, iLiveVarList, iCheckpoint),_actionFunc(iActionFunc){
+TMLDelayCommand::TMLDelayCommand(ID iID, TMLTask* iTask,TMLLength iStatLength, DelayActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay):TMLCommand(iID, iTask, 1, 1, iLiveVarList, iCheckpoint),_actionFunc(iActionFunc){
 	if (!isActiveDelay){
 	    _isActiveDelay = false;
 	}else {
diff --git a/simulators/c++2/src_simulator/app/TMLDelayCommand.h b/simulators/c++2/src_simulator/app/TMLDelayCommand.h
index 7e1d4b838df1c9063eddd04005e3c676d67dd331..a564fec926a428f1966fc3ea7a8cbb925bf70680 100644
--- a/simulators/c++2/src_simulator/app/TMLDelayCommand.h
+++ b/simulators/c++2/src_simulator/app/TMLDelayCommand.h
@@ -59,7 +59,7 @@ public:
     bool _isActiveDelay;
     virtual bool getActiveDelay() {return _isActiveDelay;}
     virtual bool isDelayTransaction(){return true;}
-	TMLDelayCommand(ID iID, TMLTask* iTask, TMLLength iStatLength, ActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay);
+	TMLDelayCommand(ID iID, TMLTask* iTask, TMLLength iStatLength, DelayActionFuncPointer iActionFunc, const char* iLiveVarList, bool iCheckpoint, bool isActiveDelay);
 	///TMLDelayCommand
 	virtual ~TMLDelayCommand(){}
 	void execute();
@@ -71,7 +71,7 @@ public:
 	inline std::string getCommandStr() const {return "DL";}
 protected:
 	///Member function pointer to the action function
-	ActionFuncPointer _actionFunc;
+	DelayActionFuncPointer _actionFunc;
 	TMLCommand* prepareNextTransaction();
 };
 
diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h
index 1a5b9435d1fc99ac2bb0c25e03b88541bb41314c..a70db8932aa4d123fec7368ac5dfd457b24827d2 100644
--- a/simulators/c++2/src_simulator/definitions.h
+++ b/simulators/c++2/src_simulator/definitions.h
@@ -685,7 +685,9 @@ 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 int (TMLTask::*ActionFuncPointer) ();
+typedef void (TMLTask::*ActionFuncPointer) ();
+///Type of member function pointer used to indicate a function encapsulating a delay action (for TMLDelayCommand)
+typedef TMLTime (TMLTask::*DelayActionFuncPointer) ();
 ///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 3633305b044460955bebfc9be668b3122832bcae..18e40fb318780b089a113a525613c413dfcc325a 100644
--- a/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
+++ b/src/main/java/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
@@ -587,10 +587,10 @@ public class MappedSystemCTask {
                     idString = String.valueOf(currElem.getID());
                 }
                 hcode += "TMLDelayCommand " + cmdName + SCCR;
-                initCommand += "," + cmdName + "(" + idString + ",this,1,(ActionFuncPointer)&" + reference + "::" + cmdName +
+                initCommand += "," + cmdName + "(" + idString + ",this,1,(DelayActionFuncPointer)&" + reference + "::" + cmdName +
                                "_func," +
                                " " + getFormattedLiveVarStr(currElem) + ", " + delay.getActiveDelay() + ")" + CR;
-                //initCommand += "," + cmdName + "(" + idString + ",this,"+ delayLen +",(ActionFuncPointer)&" + reference + "::" + cmdName +
+                //initCommand += "," + cmdName + "(" + idString + ",this,"+ delayLen +",(DelayActionFuncPointer)&" + reference + "::" + cmdName +
                  //       "_func," +
                  //       " " + getFormattedLiveVarStr(currElem) + ", " + delay.getActiveDelay() + ")" + CR;
                 nextCommand = cmdName + ".setNextCommand(array(1,(TMLCommand*)" + makeCommands(currElem.getNextElement(0), false, retElement, null) + "));\n";