     {
         if (value == _maximum)
             return;
+
         _maximum = value;
-        
-        rangeChanged = true;
+        maxChanged = true;
+
         invalidateProperties();
     }
     
-    //////////////////////////////////
+    //---------------------------------
     // minimum
-    //////////////////////////////////    
+    //---------------------------------
     
     private var _minimum:Number = 0;
     
+    private var minChanged:Boolean = false;
+    
     /**
      *  Number which represents the minimum value possible for 
-     *  <code>value</code>. If the values for either <code>maximum</code> or
-     *  <code>value</code> are less than <code>minimum</code>, they will
-     *  be changed to reflect the new min value.
+     *  <code>value</code>. If the values for either 
+     *  <code>maximum</code> or <code>value</code> are less
+     *  than <code>minimum</code>, they will be changed to 
+     *  reflect the new <code>minimum</code>
      *
      *  @default 0
      */

    {
        if (value == _minimum)
            return;
        _minimum = value;
        
        rangeChanged = true;
        invalidateProperties();
    }
        
    //////////////////////////////////
    // pageSize
    //////////////////////////////////

    private var _pageSize:Number = 20;

    /**
     *  Amount of change in <code>value</code> when
     *  the range is paged.
     *
     *  @default 20
     */
    public function get pageSize():Number
    {
        return _pageSize;
    }

    public function set pageSize(value:Number):void
    {
        _pageSize = value;
    }   

    //////////////////////////////////
    // stepSize
    //////////////////////////////////    
    
    private var _stepSize:Number = 1;

    /**
     *  Amount of change in <code>value</code> when
     *  the range is stepped.
     *
     *  @default 1
     */

{
    
import flash.events.Event;

import flex.core.SkinnableComponent;

import mx.events.FlexEvent;

/**
 *  The Range class holds a value and a legal range for that 
 *  value, defined by a minimum and maximum. <code>value</code>
 *  is always constrained to be within the current minimum and
 *  maximum, and the minimum and maximum are always constrained
 *  to be in the proper numerical order such that, at any time,
 *  (minimum &lt;= value &lt;= maximum) is true. 
 *  <code>value</code> is also constrained to be multiples of 
 *  valueInterval if valueInterval is not 0.
 * 
 *  <p>Range has a <code>stepSize</code> property to control 
 *  how much <code>value</code> will change based on small 
 *  stepping operations.</p>
 * 
 *  <p>Range is a base class for various controls that require Range
 *  functionality, including TrackBase and Spinner.</p>
 * 
 *  @see flex.component.TrackBase
 *  @see flex.component.Spinner
 */  
public class Range extends SkinnableComponent
{
