while (flag == 0);

should be replaced by
marker = TRUE;
for (timer=maxtime; timer4!=0; timer--)
if (flag == 1)
{
  marker = FALSE;
  break;
)
if (marker)
{
  error();
}
