slightly cleaner convergence check