OK, so an update on many replies (thanks for all of them).
@sstvmaster
I removed the battery for like 15 minutes. After that and with no network connection I restarted it. It had the last known time. My little program gave +1 hour compared to that. Once the network was reconnected the time synchronized to the correct one and my program gave +1 hour compared to that. So, in short, nothing changed.
Regarding Bios update, I would leave it out, for the time being. I would assume that Now() should call some OS functions and in the OS everything seems fine, so it is unlikely to have a Bios problem (and not even sure it has a more recent update).
@winni
It seems I do not have ntpd installed on any of the machines. no man page, no working command. So, probably it is timesyncd, although that is over my competency level.
Anyway the battery removal action clearly showed that the synchronization works well, as the time was updated once the network was reconnected.
@Remy
Thanks for joining in. Yes, I might not use the latest Indy. This is why I did not open an Indy specific question, did not want to complain on something where I did not doi the full homework before.
If Now() worked (as it works on one of the machines), I do not have a problem with Indy. Nonetheless, as you asked, here is what I did:
I have Indy 10.2.0.3 installed. I tried to look for a full packaged later version downloadable, but could not find. I went to
https://wiki.freepascal.org/Indy_with_Lazarus, that took me to
https://www.indyproject.org/, in it Download, Indy10. There are three links - none of them works.
In the installed 10.2.0.3 under /fpc, there was IdGlobal.pas with a function OffsetFromUTC, but that did not have a Linux defined source at all (and so the sw crashed when a NaN was handed over to the next function). So, I went on Github and found
https://github.com/IndySockets/Indy/blob/master/Lib/System/IdGlobal.pas. I just replaced the installed OffsetFromUTC function (blame me, not the whole IdGlobal) to the Github version. This one goes on
Result := GOffsetFromUTC;
for Linux, what is set to 0 some lines earlier. So I replaced this line with
after adding LazSysUtils to uses, and it works like a charm when Now gives the correct time.
If you can guide me to a better solution, I would appreciate it, however that still does not solve the Now issue that causes problems elsewhere as well, outside Indy.