rem: (float)(lPtr->itemCount - lPtr->fullFitLines);
add: (float)(itemCount - lPtr->fullFitLines);
context: vScrollCallBack(WMWidget *scroller, void *self){    WMList *lPtr = (WMList*)self;    WMScroller *sPtr = (WMScroller*)scroller;    int height;    int topItem = lPtr->topItem;        height = lPtr->view->size.height - 4;    switch (WMGetScrollerHitPart(sPtr)) {     case WSDecrementLine:	if (lPtr->topItem > 0) {	    lPtr->topItem--;	    updateScroller(lPtr);	}	break;	     case WSDecrementPage:	if (lPtr->topItem > 0) {	    lPtr->topItem -= lPtr->fullFitLines-(1-lPtr->flags.dontFitAll)-1;	    if (lPtr->topItem < 0)		lPtr->topItem = 0;	    updateScroller(lPtr);	}	break;	     case WSIncrementLine:	if (lPtr->topItem + lPtr->fullFitLines < lPtr->itemCount) {	    lPtr->topItem++;	    	    updateScroller(lPtr);	}	break;	     case WSIncrementPage:	if (lPtr->topItem + lPtr->fullFitLines < lPtr->itemCount) {	    lPtr->topItem += lPtr->fullFitLines-(1-lPtr->flags.dontFitAll)-1;	    if (lPtr->topItem + lPtr->fullFitLines > lPtr->itemCount)		lPtr->topItem = lPtr->itemCount - lPtr->fullFitLines;	    updateScroller(lPtr);	}	break;	     case WSKnob:	{	    int oldTopItem = lPtr->topItem;	    	    lPtr->topItem = WMGetScrollerValue(lPtr->vScroller) * 		(float)(lPtr->itemCount - lPtr->fullFitLines);	    if (oldTopItem != lPtr->topItem)		paintList(lPtr);	}	break;     case WSKnobSlot:     case WSNoPart:	/* do nothing */	break;    }    if (lPtr->topItem != topItem)	WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);}