the rate can  be a float
merge