Hi David - a 0 will get a plus sign in front of it, which appears to be convention.
BTW - I'm seeing another convention that signal reports are two digits. If that's the case, it's easy to accommodate: just add a "0" digit after the "+" digit that was just added, like this:
????????? sprintf(buff, "%s %3d %+03d %-4.0f ~? %s\n", time_str,
FYI I made this change, and completed an FT8 contact with this new code where the report I sent was formatted as "+03" and the other station decoded it fine.
73; Steve, N3SB