 									# if not, increment scrollTop
 									viewport.scrollTop(viewport.scrollTop() + wrapper.element.outerHeight(true))
 
+						doAdjustment = (rid, scrolling, finalize)->
+							log "top {actual=#{adapter.topDataPos()} visible from=#{topVisiblePos()} bottom {visible through=#{bottomVisiblePos()} actual=#{adapter.bottomDataPos()}}"
+							if shouldLoadBottom()
+								enqueueFetch(rid, true, scrolling)
+							else
+								enqueueFetch(rid, false, scrolling) if shouldLoadTop()
+							finalize(rid) if finalize
+							if pending.length == 0
+								topHeight = 0
+								for item in buffer
+									itemTop = item.element.offset().top
+									newRow = rowTop isnt itemTop
+									rowTop = itemTop
+									itemHeight = item.element.outerHeight(true) if newRow
+									if (adapter.topDataPos() + topHeight + itemHeight < topVisiblePos())
+										if newRow
+											topHeight += itemHeight
+									else
+										topVisible(item) if newRow
+										break
+
 						adjustBuffer = (rid, scrolling, newItems, finalize)->
-							doAdjustment = ->
-								log "top {actual=#{adapter.topDataPos()} visible from=#{topVisiblePos()} bottom {visible through=#{bottomVisiblePos()} actual=#{adapter.bottomDataPos()}}"
-								if shouldLoadBottom()
-									enqueueFetch(rid, true, scrolling)
-								else
-									enqueueFetch(rid, false, scrolling) if shouldLoadTop()
-								finalize(rid) if finalize
-								if pending.length == 0
-									topHeight = 0
-									for item in buffer
-										itemTop = item.element.offset().top
-										newRow = rowTop isnt itemTop
-										rowTop = itemTop
-										itemHeight = item.element.outerHeight(true) if newRow
-										if (adapter.topDataPos() + topHeight + itemHeight < topVisiblePos())
-											if newRow
-												topHeight += itemHeight
-										else
-											topVisible(item) if newRow
-											break
 							if newItems
 								$timeout ->
 									rows = []

							eventListener.$destroy()
							viewport.unbind 'resize', resizeHandler
							viewport.unbind 'scroll', scrollHandler
							viewport.parent().unbind 'mousewheel', wheelHandler

						eventListener.$on "update.items", (event, locator, newItem)->
							if angular.isFunction locator


								repeaterType = template[0].localName
								if repeaterType in ['dl']
									throw new Error "ui-scroll directive does not support <#{template[0].localName}> as a repeating tag: #{template[0].outerHTML}"
								repeaterType = 'div' if repeaterType not in ['li', 'tr']

								viewport = controllers[0] || angular.element(window)
