Anytime you specify properties.Cancel = true; in an "ing" event, no
updates occur.
You can add/update listitems in the "ing" and "ed" events. Instead of
item.Update(); try item.SystemUpdate();
Also, at the beginning of the event, execute:
this.DisableEventFiring();
At the end of the event, execute:
this.EnableEventFiring();
These commands manage the accidental firing of events from actions
performed in your code.