Andrew,
The only thing I can think of is that the Math.exp() method is returning 0 or infinity when a large number is passed in. So if e^(decay*t) is too large of a number, the result becomes 0 or infinity (not sure which it would be but either way division would be impossible). With exponents this is really easy to do, as the numbers get very large very quickly.
Just to test, if you replace the "Math.exp(decay*t)" with something else, do the errors go away? If so you've found the problem code. I think it has to be though because it's the only divisor that is variable. The only solution would be to protect that code by creating a variable to hold that result. If it is 0 or infinity, reassign that variable to a very very large number (preferably the maximum value that the datatype can hold).
Sorry for using general programming terms, I've done much more Java, PHP, and SQL lately than Javascript (which the After Effects expression engine is based on). Oh the joys of being a Media Arts and Telecommunications dual major.