--- ./scm/define-context-properties.scm	2006-11-14 15:28:40.000000000 -0500
+++ ./scm/define-context-properties-new.scm	2006-12-30 11:21:39.000000000 -0500
@@ -453,6 +453,9 @@
 used to shrink the length of brackets in the situation where one
 alternative is very large.")
 
+     (voltaBracketFinish ,boolean? "This controls whether or not the vertical
+on the right side of the volta bracket is printed.")
+
      (whichBar
       ,string?
       "This property is read to determine what type of bar line to create.
--- ./scm/define-grob-properties.scm	2006-12-20 06:30:56.000000000 -0500
+++ ./scm/define-grob-properties-new.scm	2006-12-30 08:39:44.000000000 -0500
@@ -142,6 +142,7 @@
 by this much.")
      (extra-Y-extent ,number-pair? "See @code{extra-X-extent}.")
      (extra-spacing-width ,number-pair? "In the horizontal spacing problem, we pad each item by this amount (by adding the car on the left side of the item and adding the cdr on the right side of the item). In order to make a grob take up no horizontal space at all, set this to (+inf.0 . -inf.0)")
+     (finish-volta-bracket ,boolean? "Volta bracket should be finished by printing a vertical bar on the right.")
      (X-extent ,number-pair? "Hard coded extent in X direction. ")
      (Y-extent ,number-pair? "See @code{X-extent}.")
      (extra-offset ,number-pair? "A pair representing an offset. This
--- ./scm/define-grobs.scm	2006-12-20 06:30:56.000000000 -0500
+++ ./scm/define-grobs-new.scm	2006-12-30 08:46:28.000000000 -0500
@@ -2005,6 +2005,7 @@
 	(side-axis . ,Y)
 	(thickness . 1.6)  ;;  line-thickness
 	(edge-height . (2.0 . 2.0)) ;; staff-space;
+	(finish-volta-bracket . #f)
 	(minimum-space . 5)
 	(font-size . -4)
 	(outside-staff-priority . 100)
--- ./lily/volta-bracket.cc	2006-12-03 13:55:58.000000000 -0500
+++ ./lily/volta-bracket-new.cc	2006-12-30 09:19:00.000000000 -0500
@@ -127,12 +127,16 @@
   else
     str = "|";
 
-  no_vertical_end
-    |= (str != ":|"
-	&& str != "|:"
-	&& str != "|."
-	&& str != ":|:"
-	&& str != ".|");
+  SCM finish = me->get_property ("finish-volta-bracket");
+  if (! (scm_is_bool (finish) && to_boolean (finish)))
+    {
+      no_vertical_end
+	|= (str != ":|"
+	    && str != "|:"
+	    && str != "|."
+	    && str != ":|:"
+	    && str != ".|");
+    }
 
   if (no_vertical_end || no_vertical_start)
     {
@@ -172,5 +176,6 @@
 	       /* properties */
 	       "bars "
 	       "thickness "
-	       "height");
+	       "height "
+	       "finish-volta-bracket");
 
--- lily/volta-engraver.cc	2006-12-03 13:55:58.000000000 -0500
+++ lily/volta-engraver-new.cc	2006-12-30 11:22:40.000000000 -0500
@@ -137,6 +137,22 @@
 	&& *unsmob_moment (l) <= now - started_mom_;
 
       end = end || early_stop;
+
+      SCM finish = get_property ("voltaBracketFinish");
+      if (scm_is_bool (finish) && to_boolean (finish))
+	{
+	  volta_span_->set_property ("finish-volta-bracket", SCM_BOOL_T);
+      
+	  if (early_stop)
+	    {
+	      Drul_array<Real> edge_height =
+		robust_scm2interval (volta_span_->get_property ("edge-height"),
+				     Interval (1.0, 1.0));
+	      edge_height[RIGHT] = 0.0;
+	      volta_span_->set_property ("edge-height",
+					 ly_interval2scm (edge_height));
+	    }
+	}
     }
 
   if (end && !volta_span_)
