When you assign the kCLLocationAccuracyHundredMeters to the desiredAccuracy property of your CLLocationManager, what you are actually doing is suggesting the manager the level of accuracy you want on the location it reports to you. The CLLocationManager can be a gentleman and provide you with the desired accuracy, but sometimes, it is not possible for the locationManager to provide you with such level of accuracy. What you need to do is, in your delegate, when you are receiving the CLLocation objects, you look for the date the location was captured, and the horizontal/vertical accuracy properties. This will allow you to determine how accurate the data really is.
The CLLocationManager's location property will give you the last recorded location, even before reporting location changes to its delegate.