diff --git a/src/tmltranslator/toturtle/TML2TURTLE.java b/src/tmltranslator/toturtle/TML2TURTLE.java
index 32c92c64f6363ce53bfb5b58c9c2e2265c128d67..706080f9381a8195f260997c89e6292691dea797 100755
--- a/src/tmltranslator/toturtle/TML2TURTLE.java
+++ b/src/tmltranslator/toturtle/TML2TURTLE.java
@@ -860,7 +860,62 @@ public class TML2TURTLE {
                     return adag;
                 } else {
                     parameter = tclass.addNewParamIfApplicable("cpt__0", "nat", "0");
-                    adacparam = new ADActionStateWithParam(parameter);
+					adchoice = null;
+					adacparam2 = null;
+					
+					for(int k=0; k<acch.getNbOfChannels(); k++) {
+						
+						adacparam = new ADActionStateWithParam(parameter);
+						adacparam.setActionValue(acch.getNbOfSamples());
+						tclass.getActivityDiagram().add(adacparam);
+						
+						if (k ==0) {
+							newElements.add(adacparam);
+							baseElements.add(tmle);
+							adacparam2 = adacparam;
+						} else {
+							adchoice.addNext(adacparam);
+						}
+						
+						adj = new ADJunction();
+						tclass.getActivityDiagram().add(adj);
+						adacparam.addNext(adj);
+                    
+						adchoice = new ADChoice();
+						tclass.getActivityDiagram().add(adchoice);
+						adj.addNext(adchoice);
+						
+						adacparam1 = new ADActionStateWithParam(parameter);
+						adacparam1.setActionValue("cpt__0 - 1");
+						tclass.getActivityDiagram().add(adacparam1);
+						adacparam1.addNext(adj);
+						
+						g = addGateChannel("wr", acch, k, tclass);
+						TClass tcl = tm.getTClassWithName(getChannelString(acch.getChannel(k)));
+						g1 = tcl.getGateByName("wr__"+acch.getChannel(k).getName());
+						tm.addSynchroRelation(tclass, g, tcl, g1);
+						
+						adag = new ADActionStateWithGate(g);
+						adag.setActionValue("");
+						tclass.getActivityDiagram().add(adag);
+						adchoice.addNext(adag);
+						adchoice.addGuard("[cpt__0 > 0]");
+						
+						adag.addNext(adacparam1);
+						
+						if (k == (acch.getNbOfChannels()-1)) {
+							adc1 = translateAD(newElements, baseElements, tclass, task, tmle.getNextElement(0), adacparam1, adjunc);
+							adchoice.addNext(adc1);
+						}
+						
+						adchoice.addGuard("[cpt__0 == 0]");
+					}
+					
+                    return adacparam2;
+					
+					
+					
+                    /*adacparam = new ADActionStateWithParam(parameter);
                     adacparam.setActionValue(acch.getNbOfSamples());
                     tclass.getActivityDiagram().add(adacparam);
                     
@@ -904,7 +959,7 @@ public class TML2TURTLE {
                     adc1 = translateAD(newElements, baseElements, tclass, task, tmle.getNextElement(0), adacparam, adjunc);
                     adchoice.addNext(adc1);
                     adchoice.addGuard("[cpt__0 == 0]");
-                    return adacparam;
+                    return adacparam;*/
                 }
             }
 		} catch (Exception e) {
diff --git a/src/tmltranslator/touppaal/TML2UPPAAL.java b/src/tmltranslator/touppaal/TML2UPPAAL.java
index 08fbab609660667f807bf04c3e0e7263711acacb..292f68f9a5235d7e6bf812ec54a638d649bbde13 100755
--- a/src/tmltranslator/touppaal/TML2UPPAAL.java
+++ b/src/tmltranslator/touppaal/TML2UPPAAL.java
@@ -349,6 +349,7 @@ public class TML2UPPAAL {
         // Write channel
       } else if (elt instanceof TMLWriteChannel) {
         wc = (TMLWriteChannel)elt;
+		
         loc = addLocation(template);
         tr = addTransition(template, previous, loc);
         setAssignment(tr, "nb__wr = " + wc.getNbOfSamples());
@@ -359,31 +360,37 @@ public class TML2UPPAAL {
 			setGuard(tr1, "nb__wr>0");
 			setSynchronization(tr1, "wr__" +wc.getChannel(0).getName() + "!");
 			setAssignment(tr1, "nb__wr = nb__wr - 1");
+			
+			loc1 = addLocation(template);
+			tr2 = addTransition(template, loc, loc1);
+			setGuard(tr2, "nb__wr==0");
+			rtu.addTMLActivityElementLocation(elt, previous, loc1);
+			
 		} else {
 			loc2 = loc;
 			loc1 = null;
 			for(int k=0; k<wc.getNbOfChannels(); k++) {
+				tr1 = addTransition(template, loc, loc);
+				setGuard(tr1, "nb__wr>0");
+				setSynchronization(tr1, "wr__" +wc.getChannel(k).getName() + "!");
+				setAssignment(tr1, "nb__wr = nb__wr - 1");
+				
 				if (k == (wc.getNbOfChannels()-1)) {
-					tr1 = addTransition(template, loc2, loc);
-					setAssignment(tr1, "nb__wr = nb__wr - 1");
+					loc1 = addLocation(template);
+					tr2 = addTransition(template, loc, loc1);
+					setGuard(tr2, "nb__wr==0");
+					rtu.addTMLActivityElementLocation(elt, previous, loc1);
 				} else {
 					loc1 = addLocation(template);
-					tr1 = addTransition(template, loc2, loc1);
+					tr2 = addTransition(template, loc, loc1);
+					setGuard(tr2, "nb__wr == 0");
+					setAssignment(tr2, "nb__wr = " + wc.getNbOfSamples());
+					loc = loc1;
 				}
-				if (loc2 == loc) {
-					setGuard(tr1, "nb__wr>0");
-				}
-				loc2 = loc1;
-				setGuard(tr1, "nb__wr>0");
-				setSynchronization(tr1, "wr__" +wc.getChannel(k).getName() + "!");
 			}
 		}
-
-        loc1 = addLocation(template);
-        tr2 = addTransition(template, loc, loc1);
-        setGuard(tr2, "nb__wr==0");
-		rtu.addTMLActivityElementLocation(elt, previous, loc1);
-        makeElementBehavior(task, template, elt.getNextElement(0), loc1, end);
+		
+		makeElementBehavior(task, template, elt.getNextElement(0), loc1, end);
 
         // Send Request
       } else if (elt instanceof TMLSendRequest) {