You're thinking too complicated. The time is just a straight var on which you can add hours or minutes without borrowing from the next day or year.

DATE ConvertTime(...)
{
...
SystemTimeToVariantTime(&Time,&vTime);
#ifdef HISTDATA
vTime += 5./24.; // add 5 hours for converting EST to UTC
#endif
return vTime;
}

I have not tried it, but it should work.