+ /*
+ lower voice semibreve rests generally hang a line lower
+ */
+
+ if (dir < 0)
+ pos -= 2;
+
+ /*
+ make a semibreve rest hang from the next available line,
+ except when there is none.
+ */
+
+ std::vector<Real>::const_iterator it
+ = std::upper_bound (linepos.begin (), linepos.end (), pos);
+ if (it != linepos.end ())
+ pos = *it;
+ else
+ pos = linepos.back ();