diff -rp -u8 yorick-orig/yorick/std0.c yorick-2.2.02+dfsg/yorick/std0.c
--- yorick-orig/yorick/std0.c	2013-01-05 12:15:04.000000000 +0100
+++ yorick-2.2.02+dfsg/yorick/std0.c	2013-01-05 12:21:14.000000000 +0100
@@ -1351,18 +1351,19 @@ void Y_tanh(int nArgs) { UnaryTemplate(n
 /* ----- exp ----- */
 
 static Looper expLoop, expZLoop;
 
 static void expLoop(double *dst, double *src, long n)
 {
   long i;
   for (i=0 ; i<n ; i++) {
-    dst[i]= exp(src[i]);
-    if (errno) { if (errno==ERANGE && !dst[i]) errno=0; else break; }
+    double e = src[i];
+    dst[i]= exp(e);
+    if (errno) { if (errno==ERANGE && e<0.0) errno=0; else break; }
   }
 }
 static void expZLoop(double *dst, double *src, long n)
 { long i; for (i=0 ; i<n && !errno ; i+=2) expZ(&dst[i], &src[i]); }
 
 void Y_exp(int nArgs) { UnaryTemplate(nArgs, &expLoop, &expZLoop); }
 
 /* ----- log ----- */


Signed-off-by: Stephan Schreiber <info@fs-driver.org>
