diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 43c80a24d4f9c3de628aa3cb581539ce0281a70b..70ed92291d70cf53c3b1531af727cc1c479cf4ac 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2002-03-25  Paolo Carlini  <pcarlini@unitus.it>
+
+	* testsuite/22_locale/collate_byname.cc
+	(test01): compare the result of collate::compare with
+	that of collate::transform + string::compare, not with
+	that of collate::transform + collate::compare; values
+	returned by collate::compare are normalized, therefore
+	test against +-1.
+
 2002-03-25  Benjamin Kosnik  <bkoz@redhat.com>
             Jakub Jelinek  <jakub@redhat.com>
 	
diff --git a/libstdc++-v3/testsuite/22_locale/collate_byname.cc b/libstdc++-v3/testsuite/22_locale/collate_byname.cc
index 9d1272b225115288fb7534a376e92f2e602ef5fb..a4d76829b21a70fc3d3c92cf8bb719e8a080e123 100644
--- a/libstdc++-v3/testsuite/22_locale/collate_byname.cc
+++ b/libstdc++-v3/testsuite/22_locale/collate_byname.cc
@@ -57,20 +57,20 @@ void test01()
 
   int size3 = strlen(strlit3) - 1;
   i1 = coll_de.compare(strlit3, strlit3 + size3, strlit3, strlit3 + 7);
-  VERIFY ( i1 > 0 );
+  VERIFY ( i1 == 1 );
   i1 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + size3);
-  VERIFY ( i1 < 0 );
+  VERIFY ( i1 == -1 );
   i1 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + 7);
   VERIFY ( i1 == 0 );
 
   i1 = coll_de.compare(strlit3, strlit3 + 6, strlit3 + 8, strlit3 + 14);
-  VERIFY ( i1 < 0 );
+  VERIFY ( i1 == -1 );
 
   int size4 = strlen(strlit4) - 1;
   i2 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + 13);
-  VERIFY ( i2 > 0 );
+  VERIFY ( i2 == 1 );
   i2 = coll_de.compare(strlit4, strlit4 + 13, strlit4, strlit4 + size4);
-  VERIFY ( i2 < 0 );
+  VERIFY ( i2 == -1 );
   i2 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + size4);
   VERIFY ( i2 == 0 );
 
@@ -83,10 +83,10 @@ void test01()
 
   string str3 = coll_de.transform(strlit3, strlit3 + size3);
   string str4 = coll_de.transform(strlit4, strlit4 + size4);
-  i1 = coll_de.compare(str3.c_str(), str3.c_str() + size3,
-		       str4.c_str(), str4.c_str() + size4);
+  i1 = str3.compare(str4);
   i2 = coll_de.compare(strlit3, strlit3 + size3, strlit4, strlit4 + size4);
-  VERIFY(i1 == i2);
+  VERIFY ( i2 == -1 );
+  VERIFY ( i1 * i2 > 0 );
 
 
   // Check byname locale
@@ -96,20 +96,20 @@ void test01()
   long l4;
   size4 = strlen(strlit3) - 1;
   i3 = coll_de.compare(strlit3, strlit3 + size4, strlit3, strlit3 + 7);
-  VERIFY ( i3 > 0 );
+  VERIFY ( i3 == 1 );
   i3 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + size4);
-  VERIFY ( i3 < 0 );
+  VERIFY ( i3 == -1 );
   i3 = coll_de.compare(strlit3, strlit3 + 7, strlit3, strlit3 + 7);
   VERIFY ( i3 == 0 );
 
   i3 = coll_de.compare(strlit3, strlit3 + 6, strlit3 + 8, strlit3 + 14);
-  VERIFY ( i3 < 0 );
+  VERIFY ( i3 == -1 );
 
   size4 = strlen(strlit4) - 1;
   i4 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + 13);
-  VERIFY ( i4 > 0 );
+  VERIFY ( i4 == 1 );
   i4 = coll_de.compare(strlit4, strlit4 + 13, strlit4, strlit4 + size4);
-  VERIFY ( i4 < 0 );
+  VERIFY ( i4 == -1 );
   i4 = coll_de.compare(strlit4, strlit4 + size4, strlit4, strlit4 + size4);
   VERIFY ( i4 == 0 );
 
@@ -122,10 +122,10 @@ void test01()
 
   string str5 = coll_de.transform(strlit3, strlit3 + size3);
   string str6 = coll_de.transform(strlit4, strlit4 + size4);
-  i3 = coll_de.compare(str5.c_str(), str5.c_str() + size3,
-		       str6.c_str(), str6.c_str() + size4);
+  i3 = str5.compare(str6);
   i4 = coll_de.compare(strlit3, strlit3 + size4, strlit4, strlit4 + size4);
-  VERIFY(i3 == i4);
+  VERIFY ( i4 == -1 );
+  VERIFY ( i3 * i4 > 0 );
 
   // Verify byname == de
   VERIFY ( str5 == str3 );