Much improved rate function, though rate(X) yields only about 0.8X iteractions/second