Return info on final iteration & error.
ENH: Moved consumption, utility calculation out of loop.  3x speedup.