rem: length = sPtr->view->size.height - 4;  if (!noButtons) length -= 36;
add: length = sPtr->view->size.height - 4 - buttonsLen;
context: handlePush(Scroller *sPtr, int pushX, int pushY, int alternate){    WMScrollerPart part;    int doAction = 0;        part = locatePointInScroller(sPtr, pushX, pushY, alternate);        sPtr->flags.hitPart = part;        switch (part) {     case WSIncrementLine:	sPtr->flags.incrDown = 1;	doAction = 1;	break;     case WSIncrementPage:	doAction = 1;	break;	     case WSDecrementLine:	sPtr->flags.decrDown = 1;	doAction = 1;	break;	     case WSDecrementPage:	doAction = 1;	break;	     case WSKnob:	sPtr->flags.draggingKnob = 1;#ifndef STRICT_NEXT_BEHAVIOUR	if (sPtr->flags.horizontal)	    sPtr->dragPoint = pushX;	else	    sPtr->dragPoint = pushY;	{	    int noButtons = (sPtr->flags.arrowsPosition == WSANone);	    int length, knobP;	    if (sPtr->flags.horizontal)		length = sPtr->view->size.width - 4;	    else		length = sPtr->view->size.height - 4;	    if (!noButtons)		length -= 36;	    knobP = (int)(sPtr->floatValue * (float)(length-knobLength(sPtr)));	    if (sPtr->flags.arrowsPosition == WSAMinEnd)		sPtr->dragPoint -= 2 + (noButtons ? 0 : 36) + knobP;	    else 		sPtr->dragPoint -= 2 + knobP;	}#endif /* STRICT_NEXT_BEHAVIOUR */        /* This does not seem necesary here since we don't know yet if the         * knob will be dragged later. -Dan        handleMotion(sPtr, pushX, pushY); */	break;     case WSKnobSlot:     case WSNoPart:	/* dummy */	break;    }        if (doAction && sPtr->action) {	(*sPtr->action)(sPtr, sPtr->clientData);		WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, NULL);    }}