diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c
index a2376d563d77e5446f3c6f866f6515af0ad31d51..dafc0b2904b890342b80875a32e7184535235587 100644
--- a/pd/src/g_editor.c
+++ b/pd/src/g_editor.c
@@ -3805,7 +3805,7 @@ int canvas_doconnect_doit(t_canvas *x, t_gobj *y1, t_gobj *y2,
             error("preset_node does not work with messages.");
             return(1);
         }
-        if (obj_noutlets(ob2) == 0)
+        if (obj_noutlets(ob2) == 0 && pd_class(&y2->g_pd) != print_class)
         {
             error("preset_node does not work with objects with zero "
                   "or undefined number of outlets\n");
@@ -3880,7 +3880,11 @@ int canvas_doconnect_doit(t_canvas *x, t_gobj *y1, t_gobj *y2,
     {
         
         //fprintf(stderr,"gotta do auto-connect back to preset_node\n");
+        // second check is to make sure we are not connected to the
+        // second outlet of the preset_node in which case we should not
+        // connect back to it
         if (!canvas_isconnected(x, ob2, 0, ob1, 0) &&
+            !canvas_isconnected(x, ob1, 1, ob2, 0) &&
             pd_class(&y2->g_pd) != print_class)
         {
             oc2 = obj_connect(ob2, 0, ob1, 0);
diff --git a/pd/src/x_preset.c b/pd/src/x_preset.c
index 3e73ba49f8dbbc244d974e970d07c7b45203e49b..31c5cd26c54c9445e7c27474713e6dc78114b306 100644
--- a/pd/src/x_preset.c
+++ b/pd/src/x_preset.c
@@ -529,7 +529,7 @@ static int preset_node_location_changed(t_preset_node *x)
 
 static void preset_node_anything(t_preset_node *x, t_symbol *s, int argc, t_atom *argv)
 {
-    if (PH_DEBUG) fprintf(stderr,"preset_node_anything %lx\n", (t_int)x);
+    if (PH_DEBUG) fprintf(stderr,"preset_node_anything %lx %s %d\n", (t_int)x, s->s_name, argc);
     int i;
     alist_list(&x->pn_val, 0, argc, argv);
     if (PH_DEBUG)