             return;
         
         _value = value;
-        dispatchEvent(new Event(FlexEvent.VALUE_COMMIT));
-    }
-    
-    /**
-     *  Steps the range value up or down
+        
+        dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
+    }
+    
+    /**
+     *  Steps the range value up or down.
      *
      *  @param increase Whether the stepping action increases or
      *  decreases <code>value</code>.
      */
     public function step(increase:Boolean = true):void
     {
-        value += (increase ? stepSize : -stepSize);
-    }
-    
-    /**
-     *  Pages the range value up or down
-     *
-     *  @param increase Whether the paging action increases or
-     *  decreases <code>value</code>.
-     */
-    public function page(increase:Boolean = true):void
-    {
-        value += (increase ? pageSize : -pageSize);
+        if (increase)
+            setValue(nearestValidValue(value + stepSize, stepSize));
+        else
+            setValue(nearestValidValue(value - stepSize, stepSize));
     }
 }
 
-}
+}

    //--------------------------------------------------------------------------
    //
    //  Variables
    //
    //--------------------------------------------------------------------------

    private var rangeChanged:Boolean = false;

    //--------------------------------------------------------------------------
    //
    //  Properties
    //
    //--------------------------------------------------------------------------
    
    //////////////////////////////////
    // maximum
    //////////////////////////////////    
    
    private var _maximum:Number = 100;
    
    /**
     *  Number which represents the maximum value possible for 
     *  <code>value</code>. If the values for either <code>minimum</code> or
     *  <code>value</code> are greater than <code>maximum</code>, they will
     *  be changed to reflect the new max value.
     *
     *  @default 100
     */

    {
        if (value == _minimum)
            return;
        
        _minimum = value;
        minChanged = true;
        
        invalidateProperties();
    }

    //---------------------------------
    // stepSize
    //---------------------------------    
    
    private var _stepSize:Number = 1;
    
    private var stepSizeChanged:Boolean = false;

    /**
     *  <code>stepSize</code> is the amount that the value 
     *  changes when <code>step()</code> is called. It must
     *  be a multiple of <code>valueInterval</code> unless 
     *  <code>valueInterval</code> is 0. If <code>stepSize</code>
     *  is not a multiple, it is rounded to the nearest multiple 
     *  &gt;= <code>valueInterval</code>.
     *
     *  @default 1
     */
