The `expt` function does not manage the stack correctly. This fixes it for me: ``` static void primop_expt(long arg) { double tmp = the_double(1,sp[0]); tmp = pow(tmp,the_double(2,sp[1])); *++sp = make_flonum(tmp); } ``` Note the addition of `++`.