Thanks for your input. I avoided doing this on purpose -- the UX could get a bit confusing if the IRR was going to get calculated onChange (or onBlur for that matter). In any case I do believe it can be greatly improved, this was more of an educational post.