I stumbled over a curious bug, I think:
I tried to read \"512\" as a number to base 6, and output it as base 16:
echo \"ibase=6;obase=16;512\" | bc
161
See http://docstore.mik.ua/orelly/unix/upt/ch49_03.htm
When you set ibase or obase, it's expressed with the current base of ibase. So set obase before you set ibase if you want to express obase in decimal.
See also http://www.gnu.org/software/bc/manual/html_mono/bc.html#SEC9
Input numbers may contain the characters 0-9 and A-F. (Note: They must be capitals. Lower case letters are variable names.) Single digit numbers always have the value of the digit regardless of the value of ibase. (i.e. A = 10.) For multi-digit numbers, bc changes all input digits greater or equal to ibase to the value of ibase-1. This makes the number FFF always be the largest 3 digit number of the input base.
So for obase=16 in ibase=6, the 6 becomes a 5, and it is equivalent to an output base of decimal 6 * 1 + 1 * 5 == 11, thus:
$ echo "obase=11;ibase=6;512" | bc
161