+ /* Finished for neutral position */
+ if (!dir)
+ return pos;
+
+ /* If we have a voiced position, make sure that it's on the
+ proper side of neutral before using it. If it isn't, we fall
+ back to a constant offset from neutral position.
+ */
+
+ Real neutral = staff_position_internal (me, duration_log, 0);
+
+ if (dir * (pos - neutral) > 0)
+ return pos;
+
+ return neutral + 4 * dir;