Смотри, это противоречит твоим (безусловно, переформировавшимся уже после имплементации) требованиям. Они у тебя изменились с "каждые полсекунды" (что он сейчас честно и делает) на "спустя полсекунды после предыдущего завершения". Если ты теперь переделаешь код, чтобы он соответствовал обновленным требованиям, которые ты вывел благодаря эксперименту, ты получишь необходимый результат.