 							keepFetching = insertWrapperContent(wrapper) || keepFetching
 							wrapper.op = 'none'
 							adjustPaddingSettings.height += wrapper.element.height()
+						viewport.adjustScrollTop(adjustPaddingSettings)
 
 					# re-index the buffer
 					item.scope.$index = buffer.first + i for item,i in buffer
 
 					viewport.adjustPadding()
-					viewport.adjustScrollTop(adjustPaddingSettings)
 
 					# schedule another adjustBuffer after animation completion
 					if (promises.length)

			viewport.adjustScrollTop = (options) ->
				return if not options or not options.height
				# edge case 1, scroll up from the very top position
				if options.prepend and viewport.scrollTop() < options.height
					viewport.scrollTop viewport.scrollTop() + options.height
				# edge case 2, scroll down from the very bottom position
				if options.clipTop and options.height - bottomPadding.height() > 0
					viewport.scrollTop viewport.scrollTop() + options.height - bottomPadding.height()

			viewport


					buffer.bof = false
					buffer.remove(0, overage)
					buffer.first += overage

			calculateAverageItemHeight = () ->
				viewport.averageItemHeight = 0
