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

                                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

        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 <= threshold)
        {
            v = minimum;
        }
        else if (maximum - v <= threshold)
        {
            v = maximum;
        }
