As a followup to what I just said, even though the FreeBSD code uses sscanf (using %lf) which would handle locales, I do not see their code doing a setlocale() call, which would mean that it is running in the C locale, I believe, in which case it would handle '.' and nothing else.
However, it does make a couple of unknown (to me) function calls before processing the args, which could do almost anything (caph_* related names, if they fail it does err(1, "capsicum"); which means absolutely nothing to me. kre