I think you do not catch the point. Sometimes when the client completes the the faster segment and there is no more "free block" it still continues downloading slower segments but it would better stop downloading from slowest source and pass this segment to to the fastest free source. Is it not rational?