Excellent Peter!
If you were using low level binding, it does not know about byval double or anything wider than 32 bits (on a 32 bit system)
All my Opengl stuff uses the Khronos headers in their original form.
WINGDIAPI void APIENTRY glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
Anyway, I have been checking over the numeric types to see if there are any hidden anomalies. So far I have found a problem with the hex function converting values > 8000000h.
Charles