* @param col
	 * @param acceptF return true when ok to stop
	 */
	public static void eachZeroDistances(final F1<Range, Integer> distanceF,
			final RandomAccessCol<Range> col, F1<Integer, Boolean> acceptF) {
		// Binary search

		F1<Integer, Integer> disF = disF(distanceF, col);
		
		int foundIndex = search(col.size(), disF);
		
		if (foundIndex == -1) {
			return;
		}
		
		// Found 1 sample, expand selection to start and end
		if (acceptF.e(foundIndex)) return;
		
//		if (foundIndex > chooser.size()) {
//			throw new RuntimeException();
//		}
		
//		int countDown = 3; // Sometimes sorting not work well with overlapping ranges
		
		// back
		for (int i = foundIndex -1; i > -1; i--) {
			if (disF.e(i) == 0) {
				if (acceptF.e(i)) return;
			} else { // if (countDown-- == 0) {
				break;
			}
		} 
		
//		countDown=3;
		// Forward
		for (int i = foundIndex + 1; i < col.size(); i++) {
			if (disF.e(i) == 0) {
				if (acceptF.e(i)) return;
			} else {//if (countDown-- == 0) {
				break;
			}