Scrolling logic help

I have a custom scrollbar with dragger and buttons for left and right movement. I have worked out the logic that lets me scroll my content between its beginning and ending positions. Where I am having trouble is when I scroll about half way then use the buttons to continue the rest of the way till I get to the end or back to the beginning of my content. I am not sure how to calculate where everything is and pick up the movement again on my buttons. I attached a small zip file. I am using flash CS3.


////////////////////////////
// Set variables for scroll bar    
var scrollbarWidth:Number = scrollBar_mc.scrollMask.width;
var scrollDraggerWidth:Number = scrollBar_mc.scrollDragger.width;
var maskWidth:Number = scrollBar_mc.scrollMask.width;
var leftBound:Number = scrollBar_mc.scrollMask.x;
var rightBound:Number = scrollBar_mc.scrollMask.width-scrollDraggerWidth;
var startPos:Number = mcHolder.x;
var absNumSet:Number = 0;
var contentWidth:Number = 0;
var scrollAmount:Number = 0;
var newPos:Number = 25;

//set position of dragger on startup     
scrollBar_mc.scrollDragger.x = scrollBar_mc.scrollMask.x;

//add event listeners for left and right scroll bar buttons
scrollBar_mc.scrollLeft.addEventListener(MouseEvent.CLICK, moveLeft, false, 0, true);
scrollBar_mc.scrollRight.addEventListener(MouseEvent.CLICK, moveRight, false, 0, true);

//create function to control button movement
function moveLeft(event:MouseEvent):void {
    if (mcHolder.x != scrollBar_mc.scrollMask.x) {
        mcHolder.x += 559;
        scrollBar_mc.scrollDragger.x -= ((scrollBar_mc.scrollMask.width)/12);
    }
    trace(mcHolder.x);
    trace("dragger x: "+scrollBar_mc.scrollDragger.x);    
    trace("newPos "+newPos);
}

function moveRight(event:MouseEvent):void {    
    if (mcHolder.x != -(mcHolder.width -(scrollBar_mc.scrollMask.width+25))) {
        mcHolder.x -= 559;
        scrollBar_mc.scrollDragger.x += ((scrollBar_mc.scrollMask.width)/12);
    }
    trace(mcHolder.x);
    trace("dragger x: "+scrollBar_mc.scrollDragger.x);    
    trace("newPos "+newPos);
}

//add event listener for drag button    
scrollBar_mc.scrollDragger.addEventListener(MouseEvent.MOUSE_DOWN, scrollDraggerPress, false, 0, true);

// When scrollDragger gets pressed we do this     
function scrollDraggerPress(event:MouseEvent):void {
    trace("I was clicked!");
    contentWidth = mcHolder.width;
    scrollAmount = (contentWidth-maskWidth)/(scrollbarWidth-scrollDraggerWidth);//11

    // Set bounds using some of the scroller BG properties claimed above         
    var bounds:Rectangle = new Rectangle(leftBound, 60.5, rightBound);
    scrollBar_mc.scrollDragger.startDrag(false, bounds);

    // Event Listeners 
    scrollBar_mc.scrollDragger.addEventListener(MouseEvent.MOUSE_MOVE, reportStageMouse, false, 0, true);
    scrollBar_mc.scrollDragger.addEventListener(MouseEvent.MOUSE_UP, mouseUpOnStage, false, 0, true);
    stage.addEventListener(MouseEvent.MOUSE_MOVE, reportStageMouse, false, 0, true);    
    stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpOnStage, false, 0, true);
    
    function reportStageMouse(event:MouseEvent):void {
        absNumSet = Math.abs(scrollBar_mc.scrollMask.x - scrollBar_mc.scrollDragger.x);
        mcHolder.x = + Math.round(absNumSet * - 1 * scrollAmount + startPos);
        //trace("mcHolder x: "+mcHolder.x);
        trace("dragger x: "+scrollBar_mc.scrollDragger.x);
        newPos = mcHolder.x;
        trace("newPos "+newPos);
    }
    
    // When mouse is released while dragging we do this         
    function mouseUpOnStage(event:MouseEvent):void {
        stopDrag();
        scrollBar_mc.scrollDragger.removeEventListener(MouseEvent.MOUSE_MOVE, reportStageMouse);
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, reportStageMouse);
        removeOthersEvents();
    }
    
    function removeOthersEvents():void {
        scrollBar_mc.scrollDragger.removeEventListener(MouseEvent.MOUSE_UP, mouseUpOnStage);
        stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpOnStage);
    }
}