Improved gather candidate while loop