Hola dieguicho:
Creo que cuando encuentras el "ocupado" antes de hacer el return, tendrías que actualizar la variable dayEnd y llamar a la función writeDays()...
Es que al salir del bucle con return también sales de la función, y lo que quedara pendiente no se hace.
Espero que sea eso lo que necesitas.
Saludetes