         else
             val = Math.max(value - pageSize, minimum);
         if (getStyle("smoothScrolling"))
+        {
             startAnimation(getStyle("repeatInterval"), val, linearEaser);
+        }
         else
+        {
             setValue(val);
+            dispatchEvent(new Event(Event.CHANGE));
+        }
     }
 
     //--------------------------------------------------------------------------

     */
    protected function button_buttonDownHandler(event:Event):void
    {
		// Make sure we finish any running page animation before starting
		// to step.
		if (animatingSinglePage)
		{
			animationEndHandler(animator);
			animator.stop();
		}
		
        // Noop if we're currently running a stepping animation. We get
        // called repeatedly here due to the button's autoRepeat
        if (!steppingDown && !steppingUp)
        {
            var increment:Boolean = (event.target == incrementButton);

			if (!isStepping && 
				((increment && value < maximum) ||
				 (!increment && value > minimum)))
			{
				dispatchEvent(new FlexEvent(FlexEvent.CHANGING));
				isStepping = true;
			}
			
            // FIXME (chaase): first step is non-animated, just to simplify the delayed
            // start of the animated stepping. Seems okay, but worth thinking
            // about whether we should animate the first step too
            changeValueByStep(increment);
            
			systemManager.getSandboxRoot().addEventListener(MouseEvent.MOUSE_UP, 
				button_buttonUpHandler, true);
			systemManager.getSandboxRoot().addEventListener(
				SandboxMouseEvent.MOUSE_UP_SOMEWHERE, button_buttonUpHandler);
			
            // Only animate if smoothScrolling enabled and we're not at the end already
            if (getStyle("smoothScrolling") &&
                ((increment && value < maximum) ||


        // Make sure we finish any running page animation before starting
        // a new one.
        stopAnimation();
        
        // Cache original event location for use on later repeating events
        trackPosition = track.globalToLocal(new Point(event.stageX, event.stageY));
        
        // If the user shift-clicks on the track, then offset the event coordinates so 
        // that the thumb ends up centered under the mouse.
        if (event.shiftKey)
