diff --git a/pd/src/g_template.c b/pd/src/g_template.c
index 903484476958d78392404d3f0219ae0f97931eb9..b84aecebe1b350903f5e197ceb24dc53eb64df01 100644
--- a/pd/src/g_template.c
+++ b/pd/src/g_template.c
@@ -4981,6 +4981,8 @@ static void curve_vis(t_gobj *z, t_glist *glist, t_glist *parentglist,
             sprintf(tagbuf, "curve%lx.%lx", (long unsigned int)x,
                 (long unsigned int)data);
             gui_s(tagbuf);
+            gui_end_array(); /* end of tags array */
+            gui_end_vmess();
             if (!glist_istoplevel(glist))
             {
                 t_canvas *gl = glist_getcanvas(glist);
@@ -4992,8 +4994,6 @@ static void curve_vis(t_gobj *z, t_glist *glist, t_glist *parentglist,
                 canvas_restore_original_position(gl, (t_gobj *)glist,
                     objtag, -1);
             }
-            gui_end_array(); /* end of tags array */
-            gui_end_vmess();
         }
         else post("warning: curves need at least two points to be graphed");
     }