The first thing I see is that you didn't use a one-shot to trigger the math function in the first network. So, the 1 will be subtracted on each scan for as long as I0.4 is high.
As for why the devices are going crazy, I see that you used MD 0. Did you write the original program? Sometimes, a programmer will use the very low bytes as clock pulses or temp markers or something like that, and if they are used indirectly, they won't even show up in the cross reference. Since MD 0 uses bytes 0, 1, 2, and 3, and a -1 is actually Hex FFFFFFF, all of the bits will go true at once. If these bits are used elsewhere, things could go haywire.
Try programming a one-shot, and use a different dint to see if that fixes it.
Edit: I forgot to mention that I don't see where you are loading a value into MD0 to count down from. Are you doing it elsewhere in the program? Somewhere, you will have to reload it, or at least you will want to stop counting down once it reaches zero (and if you use a one-shot, combined with stopping the machine, that would probably solve that problem since I0.4 would stop going high, I assume).