Build a program with one simple GOTO Your task is to build the largest program you can that uses exactly one GOTO, without which the entire program (or at least a huge chunk of it) must be completely restructured. The score is counted as the number of statements in your code that change places or are newly introduced (removing statements doesn't add to your score) when the code is restructured without the GOTO (others are allowed to challenge your restructuring by presenting a more elegant one). As this is code bowling, highest score wins.

Note: I do not claim any liability for velociraptor attacks by attempting this challenge.
C fizzbuzz

This solution runs around the idea of interrupts and label variables (gcc only, sorry). The program sets up a timer which periodically calls main, where we goto whichever place the last execution of our interrupt handler (main) told us we should.

I've never used timers or label variables before, so I think there is much to bowl here.

#include &lt;sys/time.h&gt;
#include &lt;signal.h&gt;
#include &lt;stdio.h&gt;

int main(int argc)
{
    static int run = 1;
    static int* gotoloc = &amp;&amp;init;
    static int num = 0;
    static int limit = 50;

    goto *gotoloc;
init:
    signal(SIGVTALRM, (void (*)(int)) main);
    gotoloc = &amp;&amp;loop;

    struct itimerval it_val;

    it_val.it_value.tv_sec = 0;
    it_val.it_value.tv_usec = 100000;
    it_val.it_interval.tv_sec = 0;
    it_val.it_interval.tv_usec = 100000;
    setitimer(ITIMER_VIRTUAL, &amp;it_val, NULL);

    while(run);

loop:
    num = num + 1;
    run = num &lt; limit;
    gotoloc = &amp;&amp;notfizz + (&amp;&amp;fizz - &amp;&amp;notfizz) * !(num % 3);
    return 1;

fizz:
    printf("fizz");
    gotoloc = &amp;&amp;notbuzz + (&amp;&amp;buzz - &amp;&amp;notbuzz) * !(num % 5);
    return 1;

notfizz:
    gotoloc = &amp;&amp;notfizzbuzz + (&amp;&amp;buzz - &amp;&amp;notfizzbuzz) * !(num % 5);
    return 1;

buzz:
    printf("buzz\n");
    gotoloc = &amp;&amp;loop;
    return 1;

notbuzz:
    printf("\n");
    gotoloc = &amp;&amp;loop;
    return 1;

notfizzbuzz:
    printf("%d\n", num);
    gotoloc = &amp;&amp;loop;
    return 1;
}