Once my brain re-engaged, I realized that the compare routines are, indeed, incorrect. _And_ my fix was wrong, too. Here's a correct, working, tested version of the comparison loop:
while ((*cptr1 != 0) && (*cptr2 != 0)) { wint_t wch1 = towupper(*cptr1); wint_t wch2 = towupper(*cptr2); if (wch1 != wch2) break; cptr1++; cptr2++; } return (int)(*cptr1 - *cptr2); Note that Iconv390TransService also has the same bug. --Bill