         // updated yet.  Making the maximum==hsp here avoids trouble later
         // when Range constrains value
         var cWidth:Number = viewport.contentWidth;
-        maximum = (cWidth == 0) ? hsp : cWidth - viewportWidth;
+
+        if (getStyle("interactionMode") == InteractionMode.TOUCH)
+        {
+            // For mobile, we allow the min/max to extend a little beyond the ends so
+            // we can support bounce/pull kinetic effects.
+            minimum = -viewportWidth;
+            maximum = (cWidth == 0) ? hsp + viewportWidth : cWidth;
+        }
+        else
+        {
+            minimum = 0;
+            maximum = (cWidth == 0) ? hsp : cWidth - viewportWidth;
+        }
+        
+        
         pageSize = viewportWidth;
     }
     

    override mx_internal function viewportContentWidthChangeHandler(event:PropertyChangeEvent):void
    {
        if (viewport)
        {
            var viewportWidth:Number = isNaN(viewport.width) ? 0 : viewport.width;        
            maximum = viewport.contentWidth - viewportWidth;
        }
    }
    


import mx.core.EventPriority;
import mx.core.IInvalidating;
import mx.core.InteractionMode;
import mx.core.mx_internal;
import mx.events.FlexMouseEvent;
import mx.events.PropertyChangeEvent;
