diff --git a/src/main/java/tmltranslator/TMLSyntaxChecking.java b/src/main/java/tmltranslator/TMLSyntaxChecking.java
index 3f935dfef75c002f787cb4027d5f29d141e78695..14c761a3cb90de4641d63250f5fe1954da0586a9 100755
--- a/src/main/java/tmltranslator/TMLSyntaxChecking.java
+++ b/src/main/java/tmltranslator/TMLSyntaxChecking.java
@@ -77,6 +77,8 @@ public class TMLSyntaxChecking {
     private final String WRONG_PARAMS = "The number of params is not compatible";
     private final String DUPLICATE_NAMES = "Two elements have the same name";
 
+    private final String INVALID_NB_OF_GUARD = "The number of guards is not equal to the number of next elements";
+
     private final String TOO_MANY_MEMORIES = "Channel is mapped on more than one memory";
     private final String INVALID_CHANNEL_PATH = "Channel path is invalid";
     private final String INVALID_BUS_PATH = "Bus path is invalid for channel"; // Should be a warning only
@@ -124,6 +126,8 @@ public class TMLSyntaxChecking {
 
             checkNextActions();
 
+            checkChoices();
+
             checkPortName();
 
             //added by minh hiep
@@ -207,6 +211,21 @@ public class TMLSyntaxChecking {
         }
     }
 
+    public void checkChoices() {
+        for (TMLTask t : tmlm.getTasks()) {
+            TMLActivity tactivity = t.getActivityDiagram();
+            int n = tactivity.nElements();
+            for (int i = 0; i < n; i++) {
+                TMLActivityElement elt = tactivity.get(i);
+                if (elt instanceof TMLChoice) {
+                    if (elt.getNbNext() != ((TMLChoice) elt).getNbGuard()) {
+                        addError(t, elt, elt.getName() + ": " + INVALID_NB_OF_GUARD, TMLError.ERROR_BEHAVIOR);
+                    }
+                }
+            }
+        }
+    }
+
 
     public void checkDuplicateNames() {
         List<TMLElement> elts;
diff --git a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterfaceOUT.java b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterfaceOUT.java
index 101a1712164356f0d434caa7f1e94b0de27db3b9..69be81ef1f4e8aebc82ad7ef67daaeabb6d55eee 100644
--- a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterfaceOUT.java
+++ b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterfaceOUT.java
@@ -186,6 +186,7 @@ public class TaskNetworkInterfaceOUT extends TMLTask {
         if (packetsAvailable.size() == 0) {
             TMLStopState stopOfLeftBranchOfChoice = new TMLStopState("stopNoDestinationTask", referenceObject);
             addElement(packetChoice, stopOfLeftBranchOfChoice);
+            packetChoice.addGuard("");
             return;
         }
 
diff --git a/src/main/java/tmltranslator/tonetwork/TaskOUTForDispatch.java b/src/main/java/tmltranslator/tonetwork/TaskOUTForDispatch.java
index f69e1b2d985363d704d3bbafa4c0f5a17d86dc9b..145c3d83ea616c200f3ef43944ae05adf7d49f9b 100644
--- a/src/main/java/tmltranslator/tonetwork/TaskOUTForDispatch.java
+++ b/src/main/java/tmltranslator/tonetwork/TaskOUTForDispatch.java
@@ -137,7 +137,7 @@ public class TaskOUTForDispatch extends TMLTask {
         mainChoice = new TMLChoice("ChoiceOf" + i, referenceObject);
         activity.addLinkElement(notified, mainChoice);
 
-        activity.addLinkElement(notified, new TMLStopState("StopAfterMainChoice", referenceObject));
+        activity.addLinkElement(mainChoice, new TMLStopState("StopAfterMainChoice", referenceObject));
         mainChoice.addGuard("nEvt == 0");
 
         TMLForLoop loopInside = new TMLForLoop("LoopInside" + i, referenceObject);