I think it would be a better solution, to change code this way:
from this original code that do not consider the end date
Code:
$where[] = 'DATE(event_date) >= CURDATE()' ;
to this code
Code:
$where[] = ' DATE(a.event_date) >= CURDATE() OR DATE(a.event_end_date) >= CURDATE() ';
this way an event starting in the past and ending in the future is shown,
and also an event that has no ending date, but just a start date, is considered as well.
I hope this helps,
and is right to you to.