First a little background about (live:), (stop:), and timer threads:
a. Each (live:) macro creates it's own timer thread, so your example has three of these threads.
b. A Timer thread will keep firing (and executing the attached code) every X time-period until either: a passage traversal occurs; or a (stop:) macro is executed.
c. The (stop:) macro only effects the (live:) macro who's body it is contained within, so it only stops a single timer thread.
d. When a Timer thread fires it briefly interrupts the Reader's ability to interact with the page (eg. click on links), and the shorter the time-period passed to the (live:) macro the more often that interruption occurs.
Your example has three (live:) macros so there are three timer threads interrupting the Reader, two occurring every second and one occurring every half-second. This is why generally in game design only a single timer thread is used to handle basic game logic.
The following example uses a single (live:) macro to achieve the effect you desire.
{
(set: $seconds to 10)
(set: $wirecut to false)
}\
|message>[The bomb timer reads [$seconds]<seconds|]
|links>[\
(link: "Cut the red wire")[
(set: $wirecut to true)
(replace: ?links)[]
(replace: ?message)[Just in the nick of time!]
]
(link: "Cut the green wire")[
(set: $wirecut to true)
(replace: ?links)[]
(replace: ?message)[BOOOOM]
]
]\
|workarea>[
(live: 1s)[
(if: $wirecut)[
(stop:)
](else:)[
(set: $seconds to it - 1)
(if: $seconds is 0)[
(replace: ?links)[]
(replace: ?message)[BOOOOM]
]
(else:)[
(replace: ?seconds)[$seconds]
]
]
]]
... it uses a Boolean variable ($wirecut) to track if any wire has been cut and it checks that variable to determine if the timer thread should be stopped.
NOTE: You can place CSS like the following in your story's Story Stylesheet area to hide all the extra white space generated by the code contained within the workarea named hook.
tw-hook[name="workarea"] {
display: none;
}