fix done() method for rates above 1; add loop() method