I was able to reproduce the problem using your code.
ax = axes('Position',[.1+(counter-1)*0.3 0 0.25 1]);
the above line of code is working as expected. But
axis([-abs(fpmax)-padding abs(fpmax)+padding -abs(fpmax)-padding max(abs(fpmax),1)+padding]);
is causing unexpected behaviour, because of it's arguments being dependent on various values like fpmax, padding and alist.
3rd value of 'alist' being large as compared to 1st and 2nd we can see the difference. While looping 3rd loop can be handled separately to get the expected result.