diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 8082739..7f4f3f1 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -2,10 +2,15 @@
 
 	* bgp_attr.c: (bgp_packet_attribute) Remove dead code, Coverity
 	  CID #1
+	* bgp_aspath.{c,h}: (aspath_print_vty) take a format string,
+	  so as to reduce burden on callers, all in bgp_route.c
 	* bgp_route.c: (bgp_static_update_main) Remove useless NULL
 	  check, code already assumes bgp_static can not be NULL, 
 	  fixes CID #7.
 	  (bgp_static_update_rsclient) ditto, CID #6
+	  (route_vty_out{,tmp}) Update to match aspath_print_vty,
+	  simplifying checks needed to get spacing right. CID #4,#5.
+	  ({damp,flap}_route_vty_out) Ditto, CID #9, #10
 
 2006-05-08 Paul Jakma <paul.jakma@sun.com>
 
diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c
index 9fce6e3..d404309 100644
--- a/bgpd/bgp_aspath.c
+++ b/bgpd/bgp_aspath.c
@@ -1501,9 +1501,10 @@
 
 /* Printing functions */
 void
-aspath_print_vty (struct vty *vty, struct aspath *as)
+aspath_print_vty (struct vty *vty, const char *format, struct aspath *as)
 {
-  vty_out (vty, "%s", as->str);
+  assert (format);
+  vty_out (vty, format, as->str);
 }
 
 static void
diff --git a/bgpd/bgp_aspath.h b/bgpd/bgp_aspath.h
index 7fa7f20..bf23e5d 100644
--- a/bgpd/bgp_aspath.h
+++ b/bgpd/bgp_aspath.h
@@ -77,7 +77,7 @@
 extern struct aspath *aspath_intern (struct aspath *);
 extern void aspath_unintern (struct aspath *);
 extern const char *aspath_print (struct aspath *);
-extern void aspath_print_vty (struct vty *, struct aspath *);
+extern void aspath_print_vty (struct vty *, const char *, struct aspath *);
 extern void aspath_print_all_vty (struct vty *);
 extern unsigned int aspath_key_make (struct aspath *);
 extern int aspath_loop_check (struct aspath *, as_t);
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index c86ca5f..5623cad 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -5153,16 +5153,13 @@
 
       vty_out (vty, "%7u ",attr->weight);
     
-    /* Print aspath */
-    if (attr->aspath)
-      aspath_print_vty (vty, attr->aspath);
+      /* Print aspath */
+      if (attr->aspath)
+        aspath_print_vty (vty, "%s ", attr->aspath);
 
-    /* Print origin */
-    if (strlen (attr->aspath->str) == 0)
+      /* Print origin */
       vty_out (vty, "%s", bgp_origin_str[attr->origin]);
-    else
-      vty_out (vty, " %s", bgp_origin_str[attr->origin]);
-  }
+    }
   vty_out (vty, "%s", VTY_NEWLINE);
 }  
 
@@ -5217,16 +5214,13 @@
 
       vty_out (vty, "%7d ",attr->weight);
     
-    /* Print aspath */
-    if (attr->aspath)
-      aspath_print_vty (vty, attr->aspath);
+      /* Print aspath */
+      if (attr->aspath)
+        aspath_print_vty (vty, "%s ", attr->aspath);
 
-    /* Print origin */
-    if (strlen (attr->aspath->str) == 0)
+      /* Print origin */
       vty_out (vty, "%s", bgp_origin_str[attr->origin]);
-    else
-      vty_out (vty, " %s", bgp_origin_str[attr->origin]);
-  }
+    }
 
   vty_out (vty, "%s", VTY_NEWLINE);
 }  
@@ -5314,13 +5308,10 @@
     {
       /* Print aspath */
       if (attr->aspath)
-	aspath_print_vty (vty, attr->aspath);
+	aspath_print_vty (vty, "%s ", attr->aspath);
 
       /* Print origin */
-      if (strlen (attr->aspath->str) == 0)
-	vty_out (vty, "%s", bgp_origin_str[attr->origin]);
-      else
-	vty_out (vty, " %s", bgp_origin_str[attr->origin]);
+      vty_out (vty, "%s", bgp_origin_str[attr->origin]);
     }
   vty_out (vty, "%s", VTY_NEWLINE);
 }
@@ -5377,13 +5368,10 @@
     {
       /* Print aspath */
       if (attr->aspath)
-	aspath_print_vty (vty, attr->aspath);
+	aspath_print_vty (vty, "%s ", attr->aspath);
 
       /* Print origin */
-      if (strlen (attr->aspath->str) == 0)
-	vty_out (vty, "%s", bgp_origin_str[attr->origin]);
-      else
-	vty_out (vty, " %s", bgp_origin_str[attr->origin]);
+      vty_out (vty, "%s", bgp_origin_str[attr->origin]);
     }
   vty_out (vty, "%s", VTY_NEWLINE);
 }
@@ -5408,7 +5396,7 @@
 	  if (aspath_count_hops (attr->aspath) == 0)
 	    vty_out (vty, "Local");
 	  else
-	    aspath_print_vty (vty, attr->aspath);
+	    aspath_print_vty (vty, "%s", attr->aspath);
 	}
 
       if (CHECK_FLAG (binfo->flags, BGP_INFO_REMOVED))
