diff --git a/src/modules/sprintf/sprintf.c b/src/modules/sprintf/sprintf.c
index 702a39e61f7878c00070b7fce25ee8dec83fc446..33e09ec0976e1d218464e6a76ae965f5d9fdd67e 100644
--- a/src/modules/sprintf/sprintf.c
+++ b/src/modules/sprintf/sprintf.c
@@ -96,7 +96,7 @@
 */
 
 #include "global.h"
-RCSID("$Id: sprintf.c,v 1.23 1998/07/26 10:26:50 hubbe Exp $");
+RCSID("$Id: sprintf.c,v 1.24 1998/07/29 22:59:10 hubbe Exp $");
 #include "error.h"
 #include "array.h"
 #include "svalue.h"
@@ -958,7 +958,8 @@ static string low_pike_sprintf(char *format,
 	  break;
 	case 8:
 #ifdef DOUBLE_IS_IEEE_BIG
-	  MEMCPY(fsp->b, &tf, 8);
+	  td = (double)tf;
+	  MEMCPY(fsp->b, &td, 8);
 #else
 #ifdef DOUBLE_IS_IEEE_LITTLE
 	  td = (double)tf;