 		
 		private function _insertNext():Number
 		{
-			if (_keysArrayIndex >= _keysArray.length) // in case length is zero
+			if (_keysArrayIndex  >= _keysArray.length && _keysIndex >= _keysArray.length) // in case length is zero
 			{
 				triggerCallbacks();
 				return 1; // done
 			}
 			
-			var key:IQualifiedKey = _keysArray[_keysArrayIndex] as IQualifiedKey;
+			var key:IQualifiedKey;
+		
+			if (_keysIndex < _keysArray.length)
+			{
+				key = _keysArray[_keysIndex] as IQualifiedKey;
+				_keyToBoundsMap[key] = _plotter.getDataBoundsFromRecordKey(key);
+				
+				if (_keyToGeometriesMap != null)
+				{
+					var geoms:Array = ((_plotter as DynamicPlotter).internalObject as IPlotterWithGeometries).getGeometriesFromRecordKey(key);
+					_keyToGeometriesMap[key] = geoms;
+				}
+				_keysIndex++;					
+				return 0;
+			}
+			
+			key = _keysArray[_keysArrayIndex] as IQualifiedKey;
 			if (!_boundsArray) // is there an existing nested array?
 			{
 				//trace(key.keyType,key.localName,'(',_keysArrayIndex,'/',_keysArray.length,')');

		
		private var _queryMissingBounds:Boolean; // used by _insertNext
		private var _keysArrayIndex:int; // used by _insertNext
		private var _boundsArrayIndex:int; // used by _insertNext
		private var _boundsArray:Array; // used by _insertNext
		

				triggerCallbacks();
			
			_boundsArray = null;
			_keysArrayIndex = 0;
			_keysIndex = 0;
			_keysArray.length = 0;
			_kdTree.clear();
			collectiveBounds.reset();
