diff --git a/library/cadbiom/models/guard_transitions/chart_model.py b/library/cadbiom/models/guard_transitions/chart_model.py
index 3c69444751023ff30e313feac48c78b117c89e3d..b768d5b4fe801d6cec4c4475b45318b782489907 100644
--- a/library/cadbiom/models/guard_transitions/chart_model.py
+++ b/library/cadbiom/models/guard_transitions/chart_model.py
@@ -1920,12 +1920,20 @@ class CTransition(object):
         """
         remove the transition from its macro node
         """
-        lgtr = self.macro_node.transitions
-        for gtr in self.macro_node.transitions:
-            if self in gtr:
-                gtr.remove(self)
-                if len(gtr) == 0:
-                    lgtr.remove(gtr)
+        # list<list<CTransitions>> Sublists: transitions with common extremities
+        # defaultdict(<type 'list'>, {frozenset(['A', 'D']): [D -> A, C:, E:],
+        temp_transitions = self.macro_node.new_transitions
+        for nodes, transitions in self.macro_node.new_transitions.items():
+            if self in transitions:
+                if len(transitions) == 1:
+                    temp_transitions.pop(nodes)
+                    continue
+                # Multiple transitions: remove only the current one
+                # Is it really happen?
+                print("Remove only the current transition")
+                transitions.remove(self)
+
+        self.macro_node.new_transitions = temp_transitions
         self.ori.outgoing_trans.remove(self)
         self.ext.incoming_trans.remove(self)
         self.ori.model.transition_list.remove(self)