I can remember whether I have submitted this patch before but I've had it knocking around for while.
The patch is against 0.15.1b in debian/sid.
It works for me and I would like to get it included in libid3tag as the current version will silently fail to write updated tags that are not the same size as the original.
I've made rather crude use of malloc to handle moving the audio data to accommodate the new tag. If you'd rather I can rewrite it to use iteration and a fixed size buffer.
It also relies on ftruncate for the case when a tag shrinks which i'm guessing will require a windows alternative.
cheers, sam