{until condition} is {while} with the test turned round: it renders its content for as long as the condition is false, and stops as soon as it is true. {until $count eq 0} reads as the sentence it is - often clearer than the equivalent {while $count ne 0}.

Everything else is shared with {while}, which is the same handler: the condition is evaluated anew before every pass, written on the closing tag ({until} ... {/until condition}) it is tested after each pass so the content renders at least once, and {break}, {cease} and {continue} work inside it.

The loop is stopped after 10000 passes when its condition never becomes true - an error under the strict syntax check - and a missing condition or closing tag is an error too.