Couldn't think of a title to accurately sum up the issue, but the problem here is that in UTC+8, when running the sample program with a UTC offset of 0, I get
Sunrise: 00:00:00
Sunset: 11:08:43
But this is wrong, the sunrise should be on the previous day actually in UTC, as when I set the timzeone offset to 8, I get
Sunrise: 07:00:40
Sunset: 19:08:43
and this is confirmed to be correct by other sources.
I'm using a program that uses your library, which does all its calculations in UTC, and therefore, my sunrise times are always wrong.
I took a quick look at the code but it's a bit much to process, and I decided to open an issue instead of just tackling it myself in case the solution was easy for you.