         var v:Number = (xPos - track.x) *
                        (maximum - minimum) /
                        (track.width) + minimum;
+		
+		var threshold:Number = (maximum - minimum) / 1000;
         
         // kill rounding error at the edges.
-        if (v - minimum <= 0.002)
+        if (v - minimum <= threshold)
         {
             v = minimum;
         }
-        else if (maximum - v <= 0.002)
+        else if (maximum - v <= threshold)
         {
             v = maximum;
         }

                                isProgrammatic:Boolean = false):void
    {
        var oldValue:Number = _values[index];
        
        // we need to do the round of (to remove the floating point error)
        // if the stepSize had a fractional value

            
            if (!isNaN(oldValue))
            {
            	if (Math.abs(oldValue - value) > threshold)
            		dispatchEvent(event)
            }
            // Handle case of changing from NaN to a valid value
