I believe the issue here is likely to occur with only "short spurt" like that. This is a guess of how fluids work in dwarf fortress based on observation. Feel free to correct me if greater information has been revealed by Toady somewhere else that I haven't read...
The way floods and antifloods appear to work is they're all just self-propogating squares. When you open a floodgate, it checks to see if it's next to something that can flow through it. If so, the channel spot is filled with that fluid and marked as "flooding". If the source fluid is channel, then it's flood fluid. If the source fluid is contained, (e.g. the river), the fluid is channel fluid.
Next time a flow tick is done (not sure if this happens every time you type period to single step or less often -- should test), all "flooding" spots check all 4 compass direction for adjacent spots they can flood. If the fluid is flood fluid, all spots that aren't blocked by floodgates, unmined rock, or closed doors are valid. If the fluid is channel fluid, only channel square are valid targets.
Valid targets are filled with the same type of fluid as the originating square, the current square is no longer "flooding" and the new square (being just copies of the current fluid) are also "flooding".
This repeats until all square are no longer "flooding", and then whatever you've done is filled.
The problem occurs when multiple flows interact. Closing a floodgate works identically, but instead of being say a "flooding water fluid" you get a "flooding anti-water fluid" which seeks valid spots which are filled with water.
Now, imagine a "circular" expanding wave hitting the edge of a channel. '~' represents visible fluid while '*' marks a square targeted to be flooded next time
code:
___*
__*~~~~~
___*
code:
__*~
_*~~~~~~
__*~
code:
_*~~
*~~~~~~~
_*~~
code:
*~~~
~~~~~~~~
*~~~
Now imagine a really short anti-flood flowing behind instead... '&' marks squares, filled with water, to be anti-flooded next time.
code:
___*
__*~&___
___*
code:
__*~
_*~&____
__*~
code:
_*~&
*~&_____
_*~&
code:
*~&_
~&______
*~&_
code:
~&__
&_______
~&__
Now the problem comes here in order-of-operations. The '&'s at the top and the bottom *may* have been marked for flood because they are at the leading edge of the flood. So you have these two square marked for flood and anti-flood in the same turn.
Granted, this would not happen if either (1) floods don't mark already-fluid-filled squares for flooding next-turn or (2) any leading edge of a flood is marked with a TTL which would effectively limit the amount of water that could flow from any source by a certain square count, and the TTL was forced to divide evenly if one square propogates to more than one square. Anti-floods could be free from this TTL, since nothingness is happy to propogate forever.
Or I could be rambling too much too early. Thoughts? Criticisms?
Anyone want to try digging out a square after the space next to it has already flooded to see if, perhaps, I'm wrong, and *all* fluid filled flood water squares continue to be constant sources of water? (I would think this could be handled processor-wise more efficiently by attaching a hook to all presently-flood blocking items as they're encountered to trigger further flooding when they are removed, hence removing the need to check every single clock cycle -- and then removing said hook upon anti-flood.)