public int found_END_PROGRAM(int INDEX, String code)
    {
        log.log(4, log_key, "call   found_END_PROGRAM, INDEX = ", new Integer(INDEX).toString(), "\n");

        log.log(4, " [interpreter-end]: ", "end of Program Reached, Breaking for Loop, poping context_stack\n");
        context_stack.pop();
        INDEX += 10;

        long time_it_took = System.currentTimeMillis() - start_time;

        if(show_time)
        {
            log.log(0, log_key, "time: ",
                new Long(time_it_took).toString(), "ms\n");
        }

        if(status_time != 0)
        {
            count_time += time_it_took;
            count_both++;
            if(count_time >= status_time)
            {
                String avg_time = new Double((double)count_time/(double)count_both).toString();

                if(avg_time.length() - avg_time.indexOf('.') > 2)
                    avg_time = avg_time.substring(0, avg_time.indexOf('.') + 3);

                if(clock_time != 0)
                {
                    log.log(0, log_key, new Long(count_both).toString(),
                                        " rounds done. avg time: ",
                                        avg_time,
                                        "ms, ",
                                        new Long(count_good).toString(),
                                        " rounds went in takt, ",
                                        new Long(count_fail).toString(),
                                        " rounds went not in takt.\n"
                    );
                    count_fail = 0;
                    count_good = 0;
                }
                else
                {
                    log.log(0, log_key, new Long(count_both).toString(),
                                        " rounds done. avg time: ",
                                        avg_time,
                                        "ms\n"
                    );
                }
                count_time = 0;
                count_both = 0;
            }
        }

        if(clock_time != 0)
        {
            if(time_it_took > clock_time)
            {
                count_fail++;
                log.log(2, log_key, "couldn't keep up, took me:  ",
                                        new Long(time_it_took).toString(), "ms, ",
                                    "max time: ",
                                        new Long(clock_time).toString(), "ms, ",
                                    "trying better next time!\n");
            }
            else
            {
                count_good++;
                long sleep_time = clock_time - time_it_took;
                log.log(2, log_key, "in takt! time: ",
                                        new Long(time_it_took).toString(), "ms, sleep: ",
                                        new Long(sleep_time).toString(), "ms... \n");
                try
                {
                    TimeUnit.MILLISECONDS.sleep(sleep_time);
                }
                catch(InterruptedException e)
                {
                    log.log(0, log_key,
                        "\n\n",
                        "ERROR: interrupted on taktfrequenzy sleep!\n",
                        "DETAILED ERROR:\n",
                        "   everything went good, i went faster as i should,\n",
                        "   so i went for a short nap, but suddenly i got interrupted :(\n\n"
                    );
                    Main.exit();
                }
            }
        }

        log.log(4, log_key, "return found_END_PROGRAM, INDEX = ", new Integer(INDEX).toString(), "\n");
        return INDEX;
    }