Answering your last point first, the interface uses a 0 based index. Common to programming when dealing with arrays.
MTU1 = 0
MTU2 = 1
etc...
As for your polling returning interesting results, it is because you are pulling data from the gateway, not the MTU directly, and it is not guaranteed to be real time. Close, but not guaranteed.
The gateway has to have a bit of time to process its data and create the minute and hourly data points. Meaning the last compiled minute of data will not necessarily be ready on the minute.
To work around this issue, you will need to index the minute data you are getting, throw away any you have already logged, and fill in any missing points that may have not been ready to report when you polled.
In essence, it is up to your code to ensure data integrity. The gateway will only give you what it has ready to your request. Last 2 ponts of data is just that. Not necessarily the last two minutes.