GSM Shield doesn't connect: CGREG: 0,2

Hello,
I'm currentliy working with the GSM-Shield, and it connects sometimes, but isn't reliable, sometimes it doesn't get past the GSM.begin() and shows things like:

AT+CGREG?%13%
120 23>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%
AT+CGREG?%13%
23 54>AT+CGREG?%13%%13%%10%+CGREG: 0,2%13%%10%%13%%10%OK%13%%10%

I really don't what the reason could be, the GSM shield is working, because sometimes it connects and sends an SMS just like it should, no matter whether there's an external power source.

According to another post (Official Arduino GSM Shield Rev 3 + UNO - cannot start gsmAccess.begin() - Arduino GSM Shield - Arduino Forum), the CGREG has the following meaning:

When serach for AT commands in http://www.activexperts.com/mmtoolkit/at/commands/?at=%2BCGREG I can see that reply +CGREG: 0,2 can be parsed as:

0 - disable network registration unsolicited result code
[,,]
2 not registered, but ME is currently searching a new operator to register to

This could mean, that the operator network may have some issues, my other guess is, that's a problem in the library, but then again it wouldn't work at all.

The CGREG response is a response received directly from modem, and it receives this from network antenna. While library doesn't hang or freeze itself, the reason of problem of CGREG is network takes too much time to allow your SIM.