i seem to remember that under nextstep the algorithm was something like: while the mouse is below the window: at some repetition interval t, adjust the current y-coordinate so that the y-coord that was previously "under" the mouse is now at the bottom of the window. that gives a fairly natural proportionality to the thing. of course, it's not that simple in acme/rio style text windows, where the scrolling is proportional to the amount of data shown, not the vertical space taken by the data.