Here's my source code for Box-Muller
http://svn.code.sf.net/p/sharpneat/code/branches/V2/src/Shar...
Note it's a lot simpler (more elegant) than the Ziggurat method!
Also note the while loop rejects sqr==0 because that would cause Log(0) to throw an exception. I convinced myself that was correct when I wrote it in 2011, but I'm struggling to remember how I came to that conclusion.