diff --git a/pd/extra/expr~/vexp_if.c b/pd/extra/expr~/vexp_if.c
index 91f47ba22136185d09fca6e0e81d40b4c46eb434..a3499f4563e87da0a802e217ad93b81983ff246e 100644
--- a/pd/extra/expr~/vexp_if.c
+++ b/pd/extra/expr~/vexp_if.c
@@ -164,8 +164,8 @@ expr_ff(t_expr *x)
                 y = x->exp_proxy;
         }
         for (i = 0 ; i < x->exp_nexpr; i++);
-                if (x->exp_stack[i])
-                        fts_free(x->exp_stack[i]);
+                if (x->exp_stack[i-1])
+                        fts_free(x->exp_stack[i-1]);
 /*
  * SDY free all the allocated buffers here for expr~ and fexpr~
  * check to see if there are others