diff --git a/src/modules/sprintf/testsuite.in b/src/modules/sprintf/testsuite.in
index cc95418f79dc9ddb141e81b9df0a5b1d0d41d1e9..c507bc85e5865103329f06b3eaeacc5cc91affd4 100644
--- a/src/modules/sprintf/testsuite.in
+++ b/src/modules/sprintf/testsuite.in
@@ -70,9 +70,14 @@ test_eq([[sprintf("%4F", 2.0)]], "\100\000\000\000")
 test_eq([[sprintf("%4F", 1.5)]], "\077\300\000\000")
 test_eq([[sprintf("%4F", 1048576.125)]], "\111\200\000\001")
 test_eq([[sprintf("%4F", -17.5)]], "\301\214\000\000")
-test_eq([[sprintf("%4F", pow(2.0,-128.0))]], "\000\040\000\000")
+cond([[pow(2.0,-128.0)!=0.0]],
+[[
+  test_eq([[sprintf("%4F", pow(2.0,-128.0))]], "\000\040\000\000")
+]])
 test_eq([[sprintf("%4F", 0.033)]], "\075\007\053\002")
+test_do(signal(signum("SIGFPE"),0))
 test_eq([[sprintf("%4F", pow(2.0,128.0))]], "\177\200\000\000")
+test_do(signal(signum("SIGFPE")))
 test_eq([[sprintf("%8F", 0.0)]], "\000\000\000\000\000\000\000\000")
 test_eq([[sprintf("%8F", 1.0)]], "\077\360\000\000\000\000\000\000")
 test_eq([[sprintf("%8F", 0.5)]], "\077\340\000\000\000\000\000\000")
@@ -80,10 +85,14 @@ test_eq([[sprintf("%8F", 2.0)]], "\100\000\000\000\000\000\000\000")
 test_eq([[sprintf("%8F", 1.5)]], "\077\370\000\000\000\000\000\000")
 test_eq([[sprintf("%8F", 1048576.125)]], "\101\060\000\000\040\000\000\000")
 test_eq([[sprintf("%8F", -17.5)]], "\300\061\200\000\000\000\000\000")
-test_eq([[sprintf("%8F", pow(2.0,-128.0))]], "\067\360\000\000\000\000\000\000")
+cond([[pow(2.0,-128.0)!=0.0]],
+[[
+  test_eq([[sprintf("%8F", pow(2.0,-128.0))]], "\067\360\000\000\000\000\000\000")
+]])
 test_eq([[sprintf("%8F", 0.032999999821186065673828125)]], "\077\240\345\140\100\000\000\000")
+test_do(signal(signum("SIGFPE"),0))
 test_eq([[sprintf("%8F", pow(2.0,1024.0))]], "\177\360\000\000\000\000\000\000")
-
+test_do(signal(signum("SIGFPE")))
 
 dnl . : and ; hasn't been tested
 dnl ^, @ and _ hasn't been tested yet