         else
         {
             value = index * stepSize;
-        }
-        
-        return Math.min(Math.max(value + minimum, minimum), maximum);
+        }        
+            
+        return Math.min(Math.max(value + baseValue, minimum), maximum);
     }
     
     /**

    {
        var result:Array = [];
        var numItems:int = length;
        
        // TODO (jszeto) Add in floating point error logic
        for (var i:int = 0; i < numItems; i++)
            result.push(Math.min(Math.max(minimum + (i * stepSize), minimum), maximum));
        return result;
    }
    

        // Calculate the index by subtracting the item from the minimum and
        // dividing by the stepSize. Make sure the index is between
        // 0 and length - 1.
        var baseValue:Number = stepSize > 0 ? minimum : maximum;
        
        return Math.max(Math.min((Number(item) - baseValue) / stepSize, length - 1), 0);
    }
    
    /**
