The problem is not the server sending it but that Mikrotik uses it themselves RouterOS in addresslists with domains.
As far as I can tell, hostnames in address list work fine. RouterOS sends DNS query, gets address from answer, waits for TTL to go down to zero, then sends another query, etc...
Look in DNS cache how the TTL countdown goes for static domains defined in static DNS.
This seems to be only a display inconsistency in WinBox. E.g. if I create static record with TTL 5 minutes, in WinBox there's 05:00, then it goes down to 04:59, 04:58 and then it resets to 05:00. Sometimes it's down to 04:59 and resets to 05:01. But if I send DNS query to router, I always get response with TTL exactly 5 minutes. So I guess it's just WinBox doing the countdown and it's missing some exception for static records. Possibly a slightly confusing, but no biggie.
TTL of zero on a DNS reply is simply invalid. Fix the server that sends that.
This does happen with RouterOS. As record's TTL in RouterOS cache goes down, when I send query at the right moment, I get answer with zero TTL.
Edit: Zero TTL is not taboo for others either, I can get it for just expiring record from local Unbound or 1.1.1.1 too.