Hi, indeed, the issue seems to be in libc. I can reproduce the problem with a simple C program: #include #include #include int main(int argc, char** argv) {    setlocale (LC_ALL, "");    struct lconv* loc = localeconv();    printf("Thousands Separator: <%s>\n", loc->thousands_sep);    for(int i = 1; i \tint <%'10d>\n", f, n);    }    return 0; } Output with LC_NUMERIC=nb_NO.UTF-8: Thousands Separator: < > double <         1>     int <         1> double <        10>     int <        10> double <       100>     int <       100> double <     1 000>     int <   1 000> double <    10 000>     int <  10 000> double <   100 000>     int < 100 000> double < 1 000 000>     int <1 000 000> double <10 000 000>     int <10 000 000> So, for a float (%f), the output is as expected, while it is wrong for an integer (%d). -- Best regards / Mit freundlichen Grüßen / Med vennlig hilsen ======================================================================= Thomas Dreibholz Simula Metropolitan Centre for Digital Engineering Centre for Resilient Networks and Applications Pilestredet 52 0167 Oslo, Norway ----------------------------------------------------------------------- E-Mail:dreibh@simula.no Homepage:http://simula.no/people/dreibh =======================================================================