I have a reasonable understanding of why the legacy Fortran bindings use 2REAL, 2DOUBLE_PRECISION and 2INTEGER with {MAX,MIN}LOC reductions.
Doesn't modern Fortran provide a way to create struct-like things along the lines of C, such that more appropriate pair types could be used for these?
The relevant text is section 5.9.4 of MPI 3.1.
Jeff