Update button state in Blynk app through the code
BLYNK_READ() is documented as:


  BLYNK_READ(vPIN)
  
  BLYNK_READ defines a function that is called when device is requested to send it’s current value of Virtual Pin to the server.


That means it is called when the app or the Blynk server requests a state from the hardware/sketch, such as when the app first connects or reconnects to the Blynk server, or when the hardware reconnects to the Blynk server due to some network problem.

But if you just want to update the virtual pin V1 at an arbitrary time in your sketch, just call:

Blynk.virtualWrite(V1, pinValue);


at the point in your code where you want to "change" the button's current state. Not in the BLYNK_READ() function, but in your main code, such as:

[...]
else {
  // a lot of code here
  pinValue=0; //here i set pinValue to 0 again in order to return to mode1
  Blynk.virtualWrite(V1, pinMode);
}
[...]