 		private var _mat1:Array = [];
 		private var _mat2:Array = [];
 		private var _count:int = 2;
-		private var _m:int = 1;
+		private var _m:Number = 0;
 		private var _v:Number = 0;
 		private var _s1:Number = 0;
 		private var _s2:Number = 0;
-		
 		private var _w:Number = 0;
+		private var _p:Number = 2;
+		
 		private function _iterateJenksBreaks(returnTime:int):Number
 		{
 			for (; _count < _sortedValues.length + 1; _count++)

					var i4:Number= i3 -1;
					if(i4 !=0)
					{
						for (var p:Number = 2; p < numOfBins.value + 1; p++)
						{
							if((_mat2[_count][p]) >= (_v + _mat2[i4][p-1]))
							{
								_mat1[_count][p] = i3;
								_mat2[_count][p] = _v +_mat2[i4][p-1];
							}
						}
					}
				}
				_mat1[_count][1] = 1;
				_mat2[_count][1] = _v;
			}

			
			_previousSortedValues.length = 0;
			
			_keys = column ? column.keys : [];
			_sortedValues = new Array(_keys.length);
			_keyCount = 0;
			
			WeaveAPI.StageUtils.startTask(this,_getValueFromKeys,WeaveAPI.TASK_PRIORITY_PARSING,_handleValuesFromKeys);
			
		}
		
		private var _keyCount:int = 0;
		private var _keys:Array = []; 
		private function _getValueFromKeys():Number
		{
			if(_keyCount>=_keys.length)
				return 1;
			_sortedValues[_keyCount] = _column.getValueFromKey(_keys[_keyCount],Number);
			_keyCount ++;
			if(_keyCount>=_keys.length)
				return 1;
			else
				return _keyCount/_keys.length;
		}
		
		private function _handleValuesFromKeys():void
		{
			getCallbackCollection(asyncSort).addImmediateCallback(this,_handleSortedKeys);
			asyncSort.beginSort(_sortedValues,ObjectUtil.numericCompare);
		}
		
		private function _handleSortedKeys():void
		{
			VectorUtils.copy(_sortedValues,_previousSortedValues);
			
			_mat1 = [];
