(atomic-change-group 5) returns t, while it seems natural to me to expect it to work like save-excursion etc. and return 5.
Chances of someone relying on the existing behavior seem rather low, so I attach a patch that changes the macro to evaluate to whatever value the body evaluates. I validated make check passes through with no failures after the patch is applied.
If this patch is not an option for some reason I have not thought of, perhaps it would make sense to document what is returned and why in the atomic-change-group docstring.
Cheers,
Jarosław Rzeszótko