When we save, compatid3 flattens the values as they are saved - so because we are not re-reading the tags from the file we either need to make the values in orig_metdata match what is now in the file (i.e. run the same rules in update_to_v23() against orig_metadata), or we need to change orig_metadata to be ID3Metadata so that they are displayed / compared as they are now in the file. (I am afraid that this is a side-effect of the way we handle id3v23.) 

The alternative is to do as I did before, and capture the id3 version when we read the file and save it in the ID3Metadata class - we can then have both orig and new metadata as ID3Metadata and pass back the values as-is or flattened based on the version in the file and the write_id3v23 setting.