diff --git a/pd/src/g_clone.c b/pd/src/g_clone.c
index 8eba7ba159d97427de5c9f443a88c1480c40d524..bb85141a4dd698c36e8d4c2d92628bb82db4d554 100644
--- a/pd/src/g_clone.c
+++ b/pd/src/g_clone.c
@@ -125,12 +125,13 @@ static void clone_in_set(t_in *x, t_floatarg f)
 
 static void clone_in_all(t_in *x, t_symbol *s, int argc, t_atom *argv)
 {
-    int i;
+    int phasewas = x->i_owner->x_phase, i;
     for (i = 0; i < x->i_owner->x_n; i++)
     {
         x->i_owner->x_phase = i;
         clone_in_this(x, s, argc, argv);
     }
+    x->i_owner->x_phase = phasewas;
 }
 
 static void clone_in_vis(t_in *x, t_floatarg fn, t_floatarg vis)