Hi again. Of course, Karel Kulhavy is the one to provide feedback on this patch. But I have tried it too (after upgrading src/usr.bin/bc) and seems to be working fine for this case (NetBSD and Solaris are running their own flavours of bc):
For OpenBSD: $ bc -l ibase=4 obase=10 scale=100 l(1.031) .023311001002311221102233202 l(1.03) .022211330213133010123220033 On NetBSD 3.0.1 we have: $ bc -l ibase=4 obase=10 scale=100 l(1.031) .023311001002311221102233202 l(1.03) .022211330213133010123220033 On Solaris 9 SPARC (on a 64-bit Blade 2000): $ bc -l ibase=4 obase=10 scale=100 l(1.031) .02331113010200100201230200 l(1.03) .02233332120032011033021322 There are some differences on the third example provided by Karel: On OpenBSD: $ bc -l ibase=16 obase=10 scale=10 l(0.1000001) -2.C5C85FDF473DE3 l(0.0FFFF) -2.C5D2DC7106EFA6 l(0.1) -2386F26FC0FFFF scale=100 l(0.10000000000000000000000000000000000000000000000000001) -2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628345D6E2EABE8AF9\ EE1D881B7AEB26156554BED2BE86C43B4BAB8D704E085109D5CECA445A6E094FA5B2\ 858892BA3146B2F6844C5F0E1FAE7AA6F0EC4D980EC95BE83B1D95FDD2DCB3A1EC67\ 595232BD77E6 l(0.1) -553F75FDCEFCEF46EEDDC80DCC7F755BC28F265F9EF17CC5573C063FF540E3C42D3\ 5A1D153624ADC666B026B2716ED595D80FCF4A6E706BDE50C612152F87D8D99F72BE\ D3875B982E7C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\ FFFFFFFFFF [...] On NetBSD 3.0.1: $ bc -l ibase=16 obase=10 scale=10 l(0.1000001) -2.C5C85FDF473DE3 l(0.0FFFF) -2.C5D2DC7106EFA6 l(0.1) -FFFFFFFFFFFFFFFF.00000000000000 scale=100 l(0.10000000000000000000000000000000000000000000000000001) -2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628345D6E2EABE8AF9\ EE1D881B7AEB26156554BED2BE86C43B4BAB8D704E085109D5CECA445A6E094FA5B2\ 858892BA3146B2F6844C5F0E1FAE7AA6F0EC4D980EC95BE83B1D95FDD2DCB3A1EC67\ 595232BD77E9 l(0.1) -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.00000000000000\ 00000000000000000000000000000000000000000000000000000000000000000000\ 00000000000000000000000000000000000000000000000000000000000000000000\ 000000000000000000000000000000000000000000000000000000000000000 On Solaris... $ bc -l ibase=16 obase=10 scale=10 l(0.1000001) -2.C5C85EDF473ED l(0.0FFFF) -2.C5C95FDFC73EA l(0.1) -2.C5C85FDF473DE scale=100 scale factor is too large scale=59 l(0.10000000000000000000000000000000000000000000000000001) -2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628335D6E2EABE8AF9EE\ 1D881C l(0.1) -2.C5C85FDF473DE6AF278ECE600FCBDABD03CD0C99CA62D8B628345D6E2EABE8AF9EE\ 1D881B (I suppose that setting obase=10 after setting the input base to 16d means that the output base is set to 0x10...) Cheers, Igor.

