You try different limits for @din and check its calculations and match with your requirement. Also while using 'list variable[k=1:N@din]' ferret will tell you which range it has taken for the calculation. Also look @din function in ferret manual and how it is taking the point variable's value in which box for integration calculation.
Things will look systematic in regular grid, but in case you have irregular grid (which I presume will be in your pressure axis case) then each box size (dP) will vary for each level of integrand.
By small illustration it will be clear that how ferret does the calculation :
Consider below, the irregular grid which is at 1m, 3m, 7m and 13
m levels. Consider a variable named 'one' which has value 1 at these points till 7m, after which it has no value(...) at 13m grid point.
So if you do " list one[k=@din] ", it will give: