Return value is not updated?

In counter2() you have this line:

y= x - pushcounter2;

This is wrong, and is why the count is being subtracted from the initial value not the value after counter(). You need to change it to y = y - pushcounter2.

You also have this code in counter() which looks a bit dodgy:

y= x +pushcounter;

As written, it will reset the value to 25 each time you go through this sequence. If you want it to carry on from the previous value, you'd need to change that to y = y + pushcounter; as well.