My understanding is that voids can't return anything while functions do but are a slightly slower than voids.
That's my understanding too. But I think the performance advantage is minimal, so I use functions all the time. That avoids problems like this.
But another question: Is there any event triggered when an entity with ACTIVATE_PUSH overruns another entity? I know that EVENT_PUSH is triggered for the overrun entity but is anything triggered for the overrunnig entity? (Sorry for these confusing sentences!)