     @_validScrollPositionCheckScheduled = false
     boundedScrollPosition = @boundSp scrollPosition + desiredOffset
     global.scrollElement = @
-    if boundedScrollPosition != scrollPosition
+    if boundedScrollPosition != scrollPosition && !@_animating
+      @_animating = true
       @animators = merge originialAnimators = @animators,
-        scrollPosition: on: done: => @animators = originialAnimators
-
-      @scrollPosition   = boundedScrollPosition
+        scrollPosition: on: done: =>
+          @_animating = false
+          @animators = originialAnimators
+
+      @scrollPosition = boundedScrollPosition
 
   _scrollPositionChanged: ->
     unless @_activelyScrolling

Foundation = require 'art-foundation'
Atomic = require 'art-atomic'
{EventEpoch} = require 'art-events'

    unless @_validScrollPositionCheckScheduled
      @_validScrollPositionCheckScheduled = true
      timeout 250, =>
        if !@_gestureActive
          @animateToValidScrollPosition()
        @_validScrollPositionCheckScheduled = false

