Source: https://trac.bunkus.org/wiki/FAQ%3ADelayNotShownInMmgWhen you add that muxed file to mmg again the delay input field is left empty. Similarly MediaInfo may show delay values that are actually different than the ones you've specified. A delay you enter is not stored in some header field. Instead all the timestamps are modified by that value. So if that leads to whole packets being dropped you might even see totally confusing values reported from tools like MediaInfo (which isn't a bug in those tools either...
Let's take an AC3 track for example. Those often have packets with a duration of 32ms. Now if you offset that by -40ms mkvmerge subtracts those 40ms from all timestamps. The very first two timestamps would then be at -40ms and -8ms; however, Matroska doesn't allow negative timestamps. Therefore the first two packets will be dropped. The new first packet is the old third packet at the new timestamp 24ms (old timestamp 64ms, subtract delay 40ms = 24ms). MediaInfo would then report a positive offset of 24ms.
Delay relative to video shown under Mediainfo is merely the first postive timestamp after it was adjusted with delay value. Since mkv doesn't allow negative timestamp, how do I find out the true audio delay value?
There is an option with mkvextract that allows me to extract timecode_v2, would it be possible to tell actual delay vaule from that?