The base calculation in ReaderUtil.Gather is so complicated, add some assert to verify that it is still correct. The code lead to another bug I fixed in CompositeReaderContext long time ago (at least it explains why Simon did it wrong...)