     scrolledPastEnd   = mainChildrenOffset + mainChildrenSize <= mainElementSizeForChildren
     scrolledPastStart = mainChildrenOffset >= 0
     scrolled          = @_scrollPosition != _scrollPosition
+
+    if _scrollPosition != @boundSp _scrollPosition
+      @scheduleValidScrollPositionCheck()
 
     # update _tracking
     @_pendingState._tracking = _tracking =

    else
      1 < delta.absoluteAspectRatio

  gestureBegin:   (e) ->  @_gestureScrollStartPosition =  @_gestureScrollPosition = @getPendingScrollPosition()
  gestureResume:  (e) ->
  gestureMove:    (e) ->
    scrollPosition = @_gestureScrollPosition += @getMainCoordinate e.delta

    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
