             case Keyboard.UP:
             case Keyboard.RIGHT:
             {
-                newValue = nearestValidValue(value + stepSize, snapInterval);
+                newValue = nearestValidValue(pendingValue + stepSize, snapInterval);
                 setValue(newValue);
                 stopPropagation = true;
                 break;

            case Keyboard.DOWN:
            case Keyboard.LEFT:
            {
                newValue = nearestValidValue(value - stepSize, snapInterval);
                setValue(newValue);
                stopPropagation = true;
                break;

        var newValue:Number = pointToValue(p.x, p.y);
        newValue = nearestValidValue(newValue, snapInterval);

        if (newValue != pendingValue)
        {
            var slideDuration:Number = getStyle("slideDuration");
            if (slideDuration != 0)
