                     // Visible rows have been updated so figure out which one
                     // is now the last fully visible row.
                     visibleRows = grid.getVisibleRowIndices();
-                    lastVisibleRowIndex = visibleRows[visibleRows.length - 1];
+                    lastVisibleRowIndex = Math.min(rowCount - 1, visibleRows[visibleRows.length - 1])
                     if (visibleRows.length >= 0)
                     {
                         lastVisibleRowBounds = grid.getRowBounds(lastVisibleRowIndex);

            }
            case NavigationUnit.PAGE_DOWN:
            {
                // Page down to last fully visible row on the page.  If there is
                // a partially visible row at the bottom of the page, the next
                // page down should include it in its entirety.
                visibleRows = grid.getVisibleRowIndices();

        
        _sortableColumns = value;
        dispatchChangeEvent("sortableColumnsChanged");
    } 
    
    //----------------------------------
    //  typicalItem (delegates to grid.typicalItem)
