public void add(double value) {
			totalCount++;

			if (value < start || value > end) {
				others++;
				return;
			}

			recentlyAdded = value;

			//	binary search
			
			int low = 0;
			int high = rangeCount - 1;

			while (low <= high) {
				int mid = (high + low) >>> 1;
				if (value <= ranges[mid]) {
					if (mid > 0 && value < ranges[mid - 1]) {
						high = mid - 1;	//	continue search
					} else {
						counts[mid]++;	//	we've found the range
						return;
					}
				} else if (value > ranges[mid]) {
					low = mid + 1;
				}
			}
		}