Я бы, наверное, спроектировал его так, чтобы он мог работать "в обе стороны". Выходные данные модели должны быть стандартизированным массивом, вероятно, в соответствии с:
array('2009-08-05' => array('event' => ..., ...), '2009-08-06' => array(...));
т.е. только чистые данные.
По умолчанию он может выплевывать текущий месяц или все, что находится сейчас, и +1 месяц. Также следует принять аргумент, чтобы изменить это поведение по умолчанию. Либо взять массив дат или диапазон.
Я не знаю, почему первые две записи в вашем примере «пустые». Если ваш массив уже представляет месяц, как показано на листе календаря, то это пошло бы против MVC. Такие вопросы презентации должны быть рассмотрены в представлении.