meaning of CheckRegistration

hi,
I have a project where a Mega 2560 interfaced to a SIM900 module communicates wind data via phone calls, i.e. calling a certain phone number, a speech response is telling you the wind data.
This works fine, but from time to time the SIM900 module seems to get offline for unknown reasons. A phone call then gets the answer that the number is temporarily not available.

Up to now the only way to get out of this state is a reset on the Mega 2560. But because the hardware is located 20 km away this is no good solution. In the official library code for control of the SIM900 module there is a note that the function CheckRegistration() should be called at least every 10 seconds. I guess that the SIM900 module sometimes loses registration. Therefore I inserted the following code in the loop() function on the Mega 2560:

if (millis()-t_checkreg > T_CHECK_REG) {
    hby=0;
    byte creg;
    while ((creg=gsm.CheckRegistration(false) != REG_REGISTERED) && (hby < 3)) hby++;
    delay(100);

    t_checkreg=millis();
    if (creg == REG_REGISTERED) Serial.println(F("GSM registered"));
    else {
      Serial.print(F("GSM not registered! "));
      Serial.println(creg);
    }
  }

T_CHECK_REG is set for 10 seconds.
The Serial.print() statements are only for testing purposes.

Running the program always prints "GSM not registered! ".
But inspite of "not registered", phone calls to the SIM900 module are working.

My understanding of registration is that only after registration the SIM900 module can communicate via phone calls and SMS.

Why does a working SIM900 module always report "not registered"?
What is the meaning of "registering"?
How can I test by software if the SIM900 module is capable to communicate?

Why does a working SIM900 module always report "not registered"?

Solved : it is a programming error. Really I don't understand why. Therefore I made a further posting in "Programming Questions".

What is the meaning of "registering"?

I guess my understanding of registering is ok. I had been confused because the SIM module was working correctly inspite of prints "not registered", see above.

My third question

How can I test by software if the SIM900 module is capable to communicate?

still remains open. Or is it correct that "registering ok" guarantees that the GSM module can communicate?