diff --git a/src/avatartranslator/AvatarRandom.java b/src/avatartranslator/AvatarRandom.java
index 666afb4e8f67b9310845b7040fff42fb86b4228b..04972ce13a55ba1ba15740b148eee230fa16d356 100644
--- a/src/avatartranslator/AvatarRandom.java
+++ b/src/avatartranslator/AvatarRandom.java
@@ -87,11 +87,6 @@ public class AvatarRandom extends AvatarStateMachineElement {
         functionId = _functionId;
     }
 
-    public AvatarStateMachineElement basicCloneMe(AvatarStateMachineOwner _block) {
-        AvatarRandom ar = new AvatarRandom(getName(), getReferenceObject());
-        return ar;
-    }
-
     public String getNiceName() {
         return "Random between " + minValue + " and " + maxValue + " stored in " + variable;
     }
@@ -99,4 +94,14 @@ public class AvatarRandom extends AvatarStateMachineElement {
     public void translate (AvatarTranslator translator, Object arg) {
         translator.translateRandom (this, arg);
     }
+
+    public AvatarStateMachineElement basicCloneMe(AvatarStateMachineOwner _block) {
+	 AvatarRandom ar = new AvatarRandom(getName() + "_clone", getReferenceObject());
+
+	 ar.setVariable(variable);
+	 ar.setValues(minValue, maxValue);
+	 ar.setFunctionId(functionId);
+
+        return ar;
+    }
 }
diff --git a/src/avatartranslator/AvatarStateMachine.java b/src/avatartranslator/AvatarStateMachine.java
index 8dff4ce2a82bab9313e0435e346460908a19a2da..dfce91d279d3cb5e1d198111f0358c70ed584af5 100644
--- a/src/avatartranslator/AvatarStateMachine.java
+++ b/src/avatartranslator/AvatarStateMachine.java
@@ -378,8 +378,8 @@ private void addStatesToTransitionsBetweenTwoNonStates(AvatarBlock _block) {
                 AvatarState randomState = new AvatarState("StateForRandom__" + elt.getName() + "__" + id, elt.getReferenceObject());
 		AvatarState beforeRandom = new AvatarState("StateBeforeRandom__" + elt.getName() + "__" + id, elt.getReferenceObject());
                 AvatarTransition at2 = new AvatarTransition(_block, "Transition2ForRandom__" + elt.getName() + "__" + id, elt.getReferenceObject());
-                at2.addGuard("[" + random.getVariable() + " < " + random.getMaxValue() + "]");
-                at2.addAction(random.getVariable() + "=" + random.getVariable() + "1");
+                at2.setGuard("[" + random.getVariable() + " < " + random.getMaxValue() + "]");
+                at2.addAction(random.getVariable() + "=" + random.getVariable() + " + 1");
 
 		// Adding elements
 		toAdd.add(at1);
diff --git a/src/avatartranslator/AvatarTransition.java b/src/avatartranslator/AvatarTransition.java
index daff92d7bc37ef767f4ba6b46d4d42793ebe7148..623ee24bd96e1147a3b508030d0007b079661da3 100644
--- a/src/avatartranslator/AvatarTransition.java
+++ b/src/avatartranslator/AvatarTransition.java
@@ -90,10 +90,12 @@ public class AvatarTransition extends AvatarStateMachineElement {
 
     public void setGuard (String _guard) {
         this.guard = AvatarGuard.createFromString (this.block, _guard);
+	TraceManager.addDev("Setting guard = " + guard);
     }
 
     public void addGuard(String _g) {
         AvatarGuard guard = AvatarGuard.createFromString (this.block, _g);
+	TraceManager.addDev("Adding guard = " + guard);
         this.guard = AvatarGuard.addGuard (this.guard, guard, "and");
     }
 
@@ -194,7 +196,7 @@ public class AvatarTransition extends AvatarStateMachineElement {
 
     public void addAction(String _action) {
         AvatarAction aa = AvatarTerm.createActionFromString (block, _action);
-	TraceManager.addDev("Avatar action = " + aa);
+	TraceManager.addDev("Avatar action : " + aa);
         if (aa != null)
             actions.add(aa);
     }
diff --git a/src/avatartranslator/modelchecker/AvatarModelChecker.java b/src/avatartranslator/modelchecker/AvatarModelChecker.java
index 347949f82d77e77f3e3a37e8b5823245be9ef677..ec3712b40e7b5766f4698de0525a3f2d0bd3bc4a 100644
--- a/src/avatartranslator/modelchecker/AvatarModelChecker.java
+++ b/src/avatartranslator/modelchecker/AvatarModelChecker.java
@@ -100,7 +100,7 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
 	if (_spec != null) {
 	    initialSpec = _spec;
 	    //TraceManager.addDev("Before clone:\n" + spec);
-	    //spec = _spec.advancedClone();
+	    spec = initialSpec.advancedClone();
 	    //TraceManager.addDev("After clone:\n" + spec);
 	}
         ignoreEmptyTransitions = true;
@@ -123,6 +123,9 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
     }
 
     public int getNbOfStates() {
+	if (states == null) {
+	    return 0;
+	}
         return states.size();
     }
 
@@ -244,8 +247,6 @@ public class AvatarModelChecker implements Runnable, myutil.Graph {
 	if (spec == null) {
 	    return;
 	}
-
-	spec = initialSpec.advancedClone();
 	
         stoppedBeforeEnd = false;
         stateID = 0;