Not exactly, the fade function was the mistake! When you call it, it will be executed until the engine finds the first wait(1), then your load_wait() function will continue. The next instruction ptr_remove(ar) kills the panel instantly, but your fade function still tries to fade the panel out smoothly. As the panels probably are linked lists, the engine now fades the next pointer in the list which is your second panel (just a guess).