 					buffer.eof = false
 					buffer.remove(buffer.length - overage, buffer.length)
 					buffer.next -= overage
-					viewport.adjustPadding()
 
 			viewport.shouldLoadTop = ->
 				!buffer.bof && (viewport.topDataPos() > viewport.topVisiblePos() - bufferPadding())

							keepFetching = insertWrapperContent(wrapper) || keepFetching
							wrapper.op = 'none'
							adjustPaddingSettings.height += wrapper.element.height()

					# 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
					paddingHeight = topPadding.height() - options.height
					if paddingHeight >= 0
						topPadding.height paddingHeight
					else
						topPadding.height 0
						viewport.scrollTop viewport.scrollTop() - paddingHeight

				# 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

