Hi Olivier,
You need to describe the grid of the result.
By default Ferret/PyFerret assumes the axes of the results of an external function (in Fortran or Python) is inherited from the axes of all the argument(s). This means all arguments must have compatible grids and the result will be this grid. If this is not the case (as in your PyEF), one needs to describe the what axes are inherited from which arguments, and/or if the result uses custom (or abstract) axes. There is an example under "A grid-changing PyEF" on the documentation page
https://ferret.pmel.noaa.gov/Ferret/documentation/pyferret/pyefs
In your case you could add the following to the initialization dictionary variable "initdict":
"axes": (pyferret.AXIS_IMPLIED_BY_ARGS, pyferret.AXIS_IMPLIED_BY_ARGS,
pyferret.AXIS_IMPLIED_BY_ARGS, pyferret.AXIS_IMPLIED_BY_ARGS,
pyferret.AXIS_IMPLIED_BY_ARGS, pyferret.AXIS_IMPLIED_BY_ARGS),
"influences": ((False,False,False,False,False,False),
(True,True,True,True,True,True)),
(The "axes" tuple above is actually the default and only "influences" tuple of tuples is actually needed here, but I include it for the custom axis discussion below.)
This would tell Ferret to that the grid of the result is exactly the grid of the second argument and the grid of the first argument does not have any effect on the results. Thus, the grids of the two arguments do not need to be compatible.
If an axis of the grid of the result is actually different from either grid (for example, values are at the midpoints of the "bins" of an axis and has one less value), then you would need to call the axis a custom axis "pyferret.AXIS_CUSTOM" (or possibly an abstract axis "pyferret.AXIS_ABSTRACT"), indicate that neither argument axis influences the result axis, then describe the custom axes by defining the "ferret_custom_axes" method (and/or describe the abstract axes by defining the "ferret_result_limits" method). The example referenced above has more information on doing this.
Best,
Karl