It's just a clever way of making sure that all the required functions have been called.
Initially, the status flag as an int looks like this in binary:
0000 // truncated for clarity it would really be 32 0's
once the amount is set, the flag looks like this:
0001
Once rate is set, it looks like
0011 // because 2 in binary is ...0010, so ORing 0001 and 0010 -> 0011