So it took only 7-5 = 2 frames? That means ideally it would go 0->50->100. But it could also go 0->99->100 or 0->1->100.

To check that, you can add this line
error(str_for_num(0,percent));
to the on_level_event function. Then it will show you the progress in messageboxes.