         // Selection is not row-based so if there are existing row selections, 
         // free them since they can't be reused.
         // TBD: this check won't work with column selections.
-        if (visibleRowSelectionIndices.length && 
+        if (visibleRowSelectionIndices.length > 0 && 
             visibleColumnSelectionIndices.length == 0)
         {
             freeGridElements(visibleSelectionIndicators);

            // Selection is row-based so if there are existing cell selections, 
            // free them since they can't be reused.
            // TBD: this check won't work with column selections.
            if (visibleColumnSelectionIndices.length)
            {
                freeGridElements(visibleSelectionIndicators);
                visibleSelectionIndicators.length = 0;

        }
        
        // No selection.
        
        // If there are existing cell selections, 
        // free them since there is no selection.
        // TBD: this check won't work with column selections.
        if (visibleColumnSelectionIndices.length > 0)
        {
            freeGridElements(visibleSelectionIndicators);
            visibleSelectionIndicators.length = 0;
            visibleRowSelectionIndices.length = 0;
            visibleColumnSelectionIndices.length = 0;
        }
    }
    
    private function layoutRowSelectionIndicator(indicator:IVisualElement, rowIndex:int):void
