The speedy slider problem

I have some sliders set up so that the are limited in their x motion by either the x value on the slider track or by the furthest x they could go relative to the players current cash(as long as its not greater than the first limitation). This all works great if the slider is operated at a regular speed BUT if I grab the slider and rip it to the right I can spend more money than I have and go off the track(even off the screen).

The basic structure is this:

eventHandler onDown
{
listen for enterframe
}
enterFrame handler
{
move that slider
listen for mouse up onUp
}
Handle onUp
{
figure final values
listen for mouseDown onDown
}

Im at a loss, heres the code:

private function onDown(e:MouseEvent):void             {
                trace("v2300 ONDOWN");
                switch(e.currentTarget.name)
                {
                    
                case("repairDragger"):
                repairStart = e.currentTarget.x;
                break;
                case("fuelDragger"):
                fuelStart = e.currentTarget.x;
                break;
                }
                
                currentSliderTarget = e.currentTarget as MovieClip;
                draggerOffset = new Point(e.localX, e.localY);
                e.currentTarget.addEventListener(Event.ENTER_FRAME, onFrame);
                e.currentTarget.stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
                currentDragger = e.currentTarget as MovieClip;
                
            }
            
            private function onUp(e:MouseEvent):void 
            {
                trace("v2300 ONUP currentTarget= " +currentSliderTarget.name);
                switch (currentSliderTarget.name)
                {
                    case "repairDragger":
                            
                            //trace("V2416 onUp repairDraggerCase and target= "+e.currentTarget.name);
                            var delta:Number = repairEnd - repairStart//gives delta
                            var deltaValue:Number = Math.ceil((delta * 3.33) * _model.repairCost);
                            //trace("v2325 deltaValue= "+ deltaValue);
                            _model.cash -= deltaValue;
                            asBaseScreen.sliderArray[0].stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
                    break;
                    case "fuelDragger":
                            
                            
                            var fuelDelta:Number = fuelEnd - fuelStart
                            var fuelDeltaValue:Number = Math.ceil((fuelDelta * fuelCostPerTic) );
                            var fuelDeltaWeight:Number = Math.ceil((fuelDelta * 3.33) * _model.fuelWeight);
                            
                            _model.totalShipWeight += fuelDeltaWeight;
                            _model.cash -= fuelDeltaValue;
                            asBaseScreen.sliderArray[1].stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
                    break;
                }
                
                //repairEnd = e.currentTarget.x;
                //trace("v2317 repairEnd= " +repairEnd);
                currentDragger.removeEventListener(Event.ENTER_FRAME, onFrame);
   
            }
            
            private function onFrame(e:Event):void 
            {
                
                //trace("v2317  onFrameRunning");
                var dragger:MovieClip = e.currentTarget.parent.getChildAt(1) as MovieClip;
                var track:MovieClip=e.currentTarget.parent.getChildAt(0) as MovieClip
                var mouseX:Number = e.currentTarget.parent.mouseX;
                var dragable:Boolean = true;
                //var repairStart:Number;
                //var repairEnd:Number;
        
                
 
                var draggerBounds = dragger.getBounds(dragger.parent);
                var trackBounds = track.getBounds(dragger.parent);
    
 
                /*if (dragger.x > 300) 
                {
                    dragger.x =300;
                } 
                if (dragger.x < 0)
                {
                    dragger.x = 0;
                }*/
                
                switch (dragger.name)
                {


                    case "repairDragger":
                            //var oldDraggerX:Number;// = dragger.x;
                            var repairIncrament:Number = _model.totalShipHealth / 300;
                            var costPerTic:Number = repairIncrament * _model.repairCost
                            var potentialMove:Number = Math.floor(( _model.cash / 333)+repairStart);
                            //trace("v2369 potential= " + potentialMove);
                            
                            if (dragable == true)
                            {
                                dragger.x = mouseX - draggerOffset.x;
                            }
                            
                                    
                            if (dragger.x>300)
                                {
                                        dragger.x = 300;
                                }
                            else if(dragger.x > potentialMove)
                                {
                                        dragger.x = potentialMove;
                                }
                            if (dragger.x<0)
                                {
                                        dragger.x = 0;
                                }
                                asBaseScreen.draggerColumnArray[0].x = 35;
                                TweenLite.to(asBaseScreen.draggerColumnArray[0], 0, { scaleX:(dragger.x / 300) * 14 } );
                                asBaseScreen.sliderArray[0].draggerText.text = addCommas(Math.ceil(dragger.x * repairIncrament));
                                repairEnd = dragger.x;// Math.ceil(dragger.x * repairIncrament);
                                
                    break;


                    case "fuelDragger":
                            var fuelIncrament:Number = Math.ceil(_model.shipTotalFuel / 300);
                            //var fuelCostPerTic:Number = fuelIncrament * _model.fuelCost;
                            var fuelPotentialMove:Number = Math.floor( _model.cash / fuelCostPerTic)+fuelStart;// + fuelStart);
                            //trace("v2522 fuelIncrament= " + fuelIncrament);
                            //trace("v2523 fuelCostPerTic= " + fuelCostPerTic);
                            //trace("v2524 fuelPotentialMove= " + fuelPotentialMove);
                            //trace("v2525 dragger.x= " +dragger.x );
                            //trace("v2526 cash/incrament8cost= " +_model.cash / (fuelIncrament * _model.fuelCost));
                            //trace("v2527 fuelStart= " +fuelStart );
                            //trace("v2528 fuelEnd= " +fuelEnd );
                            //trace("v2529 this");
                        
                            fuelCostPerTic=fuelIncrament * _model.fuelCost;
                            if (dragable == true)
                            {
                                dragger.x = mouseX - draggerOffset.x;
                            }
                            
                            if (dragger.x>300)
                                {
                                    
                                    
                                        dragger.x = 300;
                                    
                                }
                            else if(dragger.x >= fuelPotentialMove)
                                {
                                    dragger.x = fuelPotentialMove;
                                    
                                    
                                }
                                
                            if (dragger.x < 0)
                                    {
                                        dragger.x = 0;
                                    }
                            
                            
                            asBaseScreen.draggerColumnArray[1].x = 35;
                            TweenLite.to(asBaseScreen.draggerColumnArray[1], 0, { scaleX:(dragger.x / 300) * 14 } );
                            asBaseScreen.sliderArray[1].draggerText.text = addCommas(Math.ceil(dragger.x * fuelIncrament));
                            fuelEnd = dragger.x;
                            
                    break;


                    case "cargoDragger":
                            
                            asBaseScreen.draggerColumnArray[2].x = 35;
                            TweenLite.to(asBaseScreen.draggerColumnArray[2], 0, { scaleX:(dragger.x / 300)*12 } );
                    break;
                    
                    case "oreDragger":
                            
                            asBaseScreen.draggerColumnArray[3].x = 35;
                            TweenLite.to(asBaseScreen.draggerColumnArray[3], 0, { scaleX:(dragger.x / 300)*12 } );
                    break;


                }