It looks like "zero" duration handling is wrong. Consider this PHP code
$e = new Event; $va = new vectoralarm; $a1 = new Alarm("Display alarm"); $a1->setRelativeStart(new Duration(0, 0, 0, 0, true), kolabformat::Start); $va->push($a1); $e->setAlarms($va); $xml = kolabformat::writeEvent($e);
The generated XML will contain <duration>-P</duration> or <duration>P</duration>, while it should be PT0S or PT0M.