EDIT^
I found a quick solution - but as with all quick solutions it may not be the best. I just terminate the USSD session, as I had suspected it seems to be that the session is remaining open, either waiting for a reply or because I am not managing the buffer input well.
I end the session with
GPRS.println("AT+CUSD=2\r");
Response();
I would really like to improve my code, but as stated I have done my best with the skill level I have - is there somewhere on the forum I could submit my code for critique / improvement? or is this offered as a service?
thanks