This has more to do with how computers work than with p-values. You have to remember that computers can't represent real numbers exactly. We are dealing with [floating point numbers][1]. So some algorithms will never get exactly zero, even if analytically the result should be zero. For example `(0.3-0.2) - (0.2-0.1)` will not give you zero. You can see that most of your estimates are essentialy zero: all.equal(-3.348e-15, 0) TRUE all.equal(-9.377e-16, 0) TRUE The same goes for your standard errors: they are zero. [1]: http://en.wikipedia.org/wiki/Floating_point