+
+ /* If THIS and OVER end at the same place,
+ advance OVER to a new source interval. */
+ if (LENGTH (this) == LENGTH (over) - over_used)
+ {
+ over = next_interval (over);
+ over_used = 0;
+ }
+ else
+ /* Otherwise just record that more of OVER has been used. */
+ over_used += LENGTH (this);
+
+ /* Always advance to a new target interval. */
+ under = next_interval (this);