stata - ivregress vs. ivreg2: discrepant estimates

I'm using Stata 13.1 and ivreg2 3.1.08. When I estimate a simple 2SLS model with ivregress (or ivreg) and ivreg2, I get discrepant estimates. Here is an example:

webuse set "https://s3.amazonaws.com/miscFileSharing/"

webuse "example.dta", clear

ivregress 2sls eqwlth yearYoung (educ = CA10)

ivreg2 eqwlth yearYoung (educ = CA10)

In this example, the differences between the two sets of estimates are minimal. But they are very large in more complex examples.

The discrepancies vanish when I use the noconstant option.

How can I make sense of these differences? I've looked to the documentation and to Statalist, but I haven't found any answers. (There are a few related discussions on Statalist, but none are really on-point.)

[Cross-posted to http://www.statalist.org/forums/forum/general-stata-discussion/general/93644.]

—————

EDIT: I heard from one of the authors of ivreg2, Mark Schaffer, about this problem. It turns out that the matrix of instruments in my example is computationally difficult to work with, and that the current version of ivreg2 is relatively intolerant of such cases. Mark adds:

If you partial out the constant with the partial option, ivreg2 agrees

with the others - the condition number is only 27 million in that case

- so this is the short run solution. But we should definitely revisit these numerical issues.