diff --git a/ghc/tests/numeric/should_run/num009.hs b/ghc/tests/numeric/should_run/num009.hs
new file mode 100644
index 0000000000000000000000000000000000000000..37d0513a39de5b29c13531805597fa82e7a34c37
--- /dev/null
+++ b/ghc/tests/numeric/should_run/num009.hs
@@ -0,0 +1,17 @@
+-- !!! tests that minBound::Int is correctly handled (for Int & Integer
+
+-- (not necessarily Haskell 98: relies on Int being a 32-bit type.)
+
+main = do
+  print (-2147483648 :: Int)			-- -2147483648
+  print ((-2147483647)-1 :: Int)		-- -2147483648
+  print (-2147483648 :: Integer)		-- -2147483648
+  print ((-2147483648 :: Int) >= 0)		-- False
+  print ((-2147483648 :: Integer) >= 0)		-- False
+  print (-(-2147483648) :: Int)			-- <undefined>
+  print (abs (-2147483648) :: Int)		-- <undefined>
+  print (abs ((-2147483647)-1) :: Int)		-- <undefined>
+  print (abs (-2147483648) :: Integer)		-- 2147483648
+  print (abs ((-2147483647)-1) :: Integer) 	-- 2147483648 (wrong in 4.04)
+  print (fromInteger (-2147483648 :: Integer) :: Int)	   -- -2147483648
+  print (fromInteger ((-2147483647)-1 :: Integer) :: Int)  -- -2147483648
diff --git a/ghc/tests/numeric/should_run/num009.stdout b/ghc/tests/numeric/should_run/num009.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..902e36915dc954d9ad60e7ae2a9fffef1dcb60da
--- /dev/null
+++ b/ghc/tests/numeric/should_run/num009.stdout
@@ -0,0 +1,12 @@
+-2147483648
+-2147483648
+-2147483648
+False
+False
+-2147483648
+-2147483648
+-2147483648
+2147483648
+2147483648
+-2147483648
+-2147483648