Reminds me of Project Euler
Reminds me of Project Euler, problem #17: http://projecteuler.net/problem=17
It's possible to write a function that correctly "speaks" all numbers between -10^23 and 10^23 in a surprisingly few lines (think ~20-30 lines + data). The trick? Recursive functions and two hashes (one for 0..20 as string and one for hundred/thousand/million/billion/trillion/etc.)