I think it's very bad, that the code calls signup_save_signup in signup_rules_signup_data_alter. It is very possible that we are saving the signup before other modules could alter the signup data. So signup_save_signup is invoking hooks with WRONG signup data.