@cbielow yes, this is unfortunate but true. The underlying problem is that some programs output integers and they can be ambiguous. There is currently no good way to resolve the ambiguity and we noticed that matching by exact mass was a bad way to resolve the ambiguity. This is the case since the integer mass maps to modifications by some biologists intuition as far as I could tell.

For example, some search engines from the TPP report modifications such as M[+16] since "it is known" that this is an oxidation or Y[243] since this is "clearly" a phosphorylation. However, for OpenMS this is not _so_ easy to know and there may be some modification matching better to +243.0 than a phosphorylation -- in this case "UniMod 40" (Sulfo) matches better since it is +243.02 while Phospho is +243.03. Therefore, we take the "first" hit which is the one that was entered first into UniMod. This is not perfect, but works for most cases.

If you have a better idea how to solve this problem, I would be happy to hear it - one idea that we had was to hardcode a few modifications (does not sound better to me) or to let the user specify a "preferred" order by which the modifications should be matched but this seemed somewhat overkill to me.