Um nochmal zum eigentlichen Problem zurückzukommen:
Was für eine
Exception?
Wenn
Bias := Trunc(tz.GetUTCOffset(Value).Negate.TotalMinutes);
wirklich auf manchen Plattformen eine
Exception auslöst, was könnte es sein? Ein Überlauf sodass das Ergebnis von
Trunc(..)
nicht mehr in einen Integer passt?
Vielleicht dass
TTimeZone.Local.GetUtcOffset(..)
irgendwas schräges liefert...