--- numbers.c.~1.193.~ 2003-07-08 10:28:38.000000000 +1000 +++ numbers.c 2003-07-17 10:10:52.000000000 +1000 @@ -3947,7 +3947,7 @@ { if (SCM_INUMP (z)) { if (SCM_INUM (z) >= 0) { - return scm_make_real (atan2 (0.0, 1.0)); + return scm_flo0; } else { return scm_make_real (atan2 (0.0, -1.0)); } @@ -3957,10 +3957,13 @@ if (sgn < 0) { return scm_make_real (atan2 (0.0, -1.0)); } else { - return scm_make_real (atan2 (0.0, 1.0)); + return scm_flo0; } } else if (SCM_REALP (z)) { - return scm_make_real (atan2 (0.0, SCM_REAL_VALUE (z))); + if (SCM_REAL_VALUE (z) >= 0) + return scm_flo0; + else + return scm_make_real (atan2 (0.0, -1.0)); } else if (SCM_COMPLEXP (z)) { return scm_make_real (atan2 (SCM_COMPLEX_IMAG (z), SCM_COMPLEX_REAL (z))); } else {