diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 5a20902efbe3120bcced6414798f85a6df926a6b..75cea57a65b4fbd5a7ad39da8aa3e6a2d1d020f5 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-14  Paolo Carlini  <pcarlini@suse.de>
+
+	* include/bits/stl_algobase.h (fill_n(char*, _Size,
+	const signed char&)): Fix signature.
+	* testsuite/25_algorithms/fill/3.cc: New.
+
 2007-01-13  John David Anglin  <dave.anglin@nrc-cnrc.gc>
 
 	* config/cpu/hppa/atomicity.h (__exchange_and_add): Don't use ordered
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 4623c615f8e4072c3c7854b4b37cde4579c48250..b5a0039f39367462bec824ecf431ffe79a08a8a0 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -675,7 +675,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
 
   template<typename _Size>
     inline signed char*
-    fill_n(char* __first, _Size __n, const signed char& __c)
+    fill_n(signed char* __first, _Size __n, const signed char& __c)
     {
       std::fill(__first, __first + __n, __c);
       return __first + __n;
diff --git a/libstdc++-v3/testsuite/25_algorithms/fill/3.cc b/libstdc++-v3/testsuite/25_algorithms/fill/3.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3fbd5b5189ef7e0ff71e9624e021f47fe66385cd
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/fill/3.cc
@@ -0,0 +1,42 @@
+// 2007-01-13  Paolo Carlini  <pcarlini@suse.de>
+
+// Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING.  If not, write to the Free
+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+// USA.
+
+// 25.2.5 [lib.alg.fill] Fill
+
+#include <algorithm>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+
+  char ca[1] = { '\0' };
+  signed char sc = 1;
+
+  std::fill_n(ca, 1, sc);
+  VERIFY( ca[0] == 1 );
+}
+
+int
+main()
+{
+  test01();
+  return 0;
+}