The raccoonloc.py script fetches the cell id like this:
Since your XML reply had all mcc, mnc, lac and ci values as 0 it seems
def readLocation(self) :
loc = location.gsm_location()
if (loc is not None):
(self.mcc, self.mnc, self.lac, self.cellid) = loc
# 3rd Ed. S60 phone return None without certificate
(self.mcc, self.mnc, self.lac, self.cellid) = (0, 0, 0, 0)
the the script didn't get the reply from the location.gsm_location() call.
Since you have a valid certificate then there must be something strange
going on with the phone. As an extreme effort you might flash the phone
with the newest SW. That might help or not...