private static SingleRange GetEquallyDividedSubRange(SingleRange singleRange, int numSubRanges, int mySubRangeIndex) { var rangeSize = singleRange.RangeSize(); uint portion = (uint)(rangeSize / numSubRanges); uint remainder = (uint)(rangeSize - portion * numSubRanges); uint start = singleRange.Begin; for (int i = 0; i < numSubRanges; i++) { // (Begin, End] uint end = (unchecked (start + portion)); // I want it to overflow on purpose. It will do the right thing. if (remainder > 0) { end++; remainder--; } if (i == mySubRangeIndex) { return(new SingleRange(start, end)); } start = end; // nextStart } throw new ArgumentException(nameof(mySubRangeIndex)); }