No speculation, only facts.

Broker: !Global Prime Pty Ltd

EURUSD M1 history from MT4:


Let's look at this tick:
2018.02.07,23:55,1.22700,1.22705,1.22683,1.22683,170

Now Zorro's history downloaded from this MT4 (time zone shift is 2h):


The same tick:
2018.02.07 21:55 1.227 1.22705 1.22683 1.22683 0 263.8

The timestamp is identical BUT Zorro uses bar close time while MT4 uses bar open time.
So, obviously it's a bug.

If there is a doubt that MT4 uses bar open time, well... here comes the proof:
Proof1:
Quote:
The bar closing time is not considered in the online trading system MetaTrader 4 (formally, the time of the last tick coming within a timeframe or the beginning time of the next timeframe can be considered as the bar closing time, as shown in Fig. 143).

Source: https://book.mql4.com/functions/datetime. Please read the full article if there are still doubts.

Proof2
Let's check iTime function definition but in Russian since MetaQuotes is a Russian company and their RnD is in Russia. I guess tutorial was translated from Russian to English. But in English version it's not directly said that it returns open bar time only indirectly. However, the Russian version explicitly says that it's an open bar time.
Russian version: https://docs.mql4.com/ru/series/itime
Translated with Google: link

Translated section with Google:
Quote:

Return value
The value of the opening time of the bar (indicated by the shift parameter) of the corresponding chart or 0 in case of an error. For more information about the error, you need to call the GetLastError () function.


I forward the link to this post to Support.
Thank you!