diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 75cea57a65b4fbd5a7ad39da8aa3e6a2d1d020f5..2a4383c260cf76fc347502c38c5afc9134c633b7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,7 @@
+2007-01-15  Paolo Carlini  <pcarlini@suse.de>
+
+	* include/std/valarray (valarray<>::cshift): Fix typo.
+
 2007-01-14  Paolo Carlini  <pcarlini@suse.de>
 
 	* include/bits/stl_algobase.h (fill_n(char*, _Size,
diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index 6c828b685173220429d072b4728249bf8598928e..87f30ec4e028abc76fc024aaee485248f0f2eabb 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -1,6 +1,6 @@
 // The template and inlines for the -*- C++ -*- valarray class.
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -847,7 +847,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
        else                   // cshift right
 	 {
 	   if (size_t(-__n) > _M_size)
-	     __n = -(-__n % _M_size);
+	     __n = -(size_t(-__n) % _M_size);
 
 	   std::__valarray_copy_construct(_M_data + _M_size + __n,
 					  _M_data + _M_size, __tmp_M_data);