Exit from cycle needed

      if (elapsed_seconds == fill_seconds)

elapsed_seconds is just simply millis() / 1000, so it will only ever be equal to 10 once every 49ish days (when millis() rolls over).

Am I correct in assuming that you want to be in the FILLING state for 10 seconds? If so, you should be recording the time that you enter the state, and while in that state, checking if it's been 10 seconds since you entered the state. If so, move to the next state.