         var maxVisibleY:Number = minVisibleY + layoutTarget.height;
        
         updateLLV(layoutTarget);
-        if (startIndex < 0)            
-            startIndex = llv.indexOf(minVisibleY);     
+        var startIndex:int = llv.indexOf(minVisibleY);     
             
         var fixedRowHeight:Number = NaN;
         if (!variableRowHeight)
             fixedRowHeight = rowHeight;  // may query typicalLayoutElement, elt at index=0
          
-        layoutTarget.beginVirtualLayout(startIndex);
         var contentWidth:Number = llv.minorSize;
         var containerWidth:Number = Math.max(contentWidth, targetWidth);        
         var y:Number = llv.start(startIndex);

        setRowCount(index - startIndex);
        setIndexInView(startIndex, endIndex);
        layoutTarget.setContentSize(contentWidth, llv.end(llv.length - 1));
        layoutTarget.endVirtualLayout(startIndex, endIndex);
    }
    


     *  for the initial layout and then, if it has changed, we loop through 
     *  the layout items again and fix up the x/width values.
     */
    private function updateDisplayListVirtual():void
    {
        var layoutTarget:GroupBase = target; 
        var eltCount:int = layoutTarget.numLayoutElements;
