     maxBeyond = windowSize / 3
     Math.atan(scrollPosition / maxBeyond ) * (2 / Math.PI) * maxBeyond
 
+  scheduleValidScrollPositionCheck: ->
+    unless @_validScrollPositionCheckScheduled
+      @_validScrollPositionCheckScheduled = true
+      timeout 250, =>
+        if @_validScrollPositionCheckScheduled && !@_gestureActive
+          @animateToValidScrollPosition()
+        @_validScrollPositionCheckScheduled = false
+
   postFlexLayout: (mainCoordinate, inFlowChildren, mainChildrenSize, mainElementSizeForChildren, mainChildrenAlignedOffset) ->
     contentFits       = mainChildrenSize <= mainElementSizeForChildren
     windowSizeChanged = @_windowSize != mainElementSizeForChildren

    super
    @_spMinusTp = 0

    @_inFlowChildren = null
    @_childrenOffset = 0
    @_childrenSize = 0

      boundedSp + overScrollTransformation scrollPosition - boundedSp, @_windowSize
    else scrollPosition

  gestureEnd:     (e) ->
    @_gestureActive = false
    @animateToValidScrollPosition()
