rB046adde64f16 was actually pretty useless (and broken), since issue ends up not being in binary search code, but in generation of the 'summed weights' array used to distribute particles over mesh items - looks like very small weights could lead to null accumulated weights, wich was breaking binary search. Fixed simply by adding a minimal, non-zero weight for mesh items to be allowed to emit particles. Hopefully we are done with this distribution mess!