diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b9420e0c63ae1e125174758011466d738958b2f3..af5c7a9a24caf50a309c7b34e21c0dc51c1b4154 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-14  Paolo Carlini  <pcarlini@suse.de>
+
+	* include/tr1/random (minstd_rand0, minstd_rand, ranlux3, ranlux4):
+	Use unsigned long as implementation-defined type.
+
 2006-07-14  Paolo Carlini  <pcarlini@suse.de>
 
 	* include/tr1/random.tcc (struct _To_Unsigned_Type): Add.
diff --git a/libstdc++-v3/include/tr1/random b/libstdc++-v3/include/tr1/random
index 581098603713320854614daa09d9e47fc558a118..59e326dddcefc59b173e9eee315db2f10c630545 100644
--- a/libstdc++-v3/include/tr1/random
+++ b/libstdc++-v3/include/tr1/random
@@ -443,12 +443,12 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
   /**
    * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller.
    */
-  typedef linear_congruential<unsigned int, 16807, 0, 2147483647> minstd_rand0;
+  typedef linear_congruential<unsigned long, 16807, 0, 2147483647> minstd_rand0;
 
   /**
    * An alternative LCR (Lehmer Generator function) .
    */
-  typedef linear_congruential<unsigned int, 48271, 0, 2147483647> minstd_rand;
+  typedef linear_congruential<unsigned long, 48271, 0, 2147483647> minstd_rand;
 
 
   /**
@@ -1056,7 +1056,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * James's luxury-level-3 integer adaptation of Luescher's generator.
    */
   typedef discard_block<
-    subtract_with_carry<int, (1 << 24), 10, 24>,
+    subtract_with_carry<unsigned long, (1 << 24), 10, 24>,
       223,
       24
       > ranlux3;
@@ -1065,7 +1065,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * James's luxury-level-4 integer adaptation of Luescher's generator.
    */
   typedef discard_block<
-    subtract_with_carry<int, (1 << 24), 10, 24>,
+    subtract_with_carry<unsigned long, (1 << 24), 10, 24>,
       389,
       24
       > ranlux4;