docs: def err(self):
          """
          A few rough approximations of the fit uncertainty. These
          values shouldn't be trusted for anything real (use MCMC instead).
          """
          # Initiallize error to nan
          err = odict(self.mle())
          err.update([(k,np.nan*np.ones(2)) for k in err.keys()])
  
          # Find the maximum likelihood
          a = self.log_likelihood_sparse_array
          j,k = np.unravel_index(a.argmax(),a.shape)
  
          self.loglike.set_params(distance_modulus=self.distance_modulus_array[j],
                                  lon=self.roi.pixels_target.lon[k],
                                  lat=self.roi.pixels_target.lat[k])
          self.loglike.sync_params()
  
          # Find the error in richness, starting at maximum
          lo,hi = np.array(self.loglike.richness_interval())
          err['richness'] = np.array([lo,hi])
  
          # ADW: This is a rough estimate of the distance uncertainty 
          # hacked to keep the maximum distance modulus on a grid index
  
          # This is a hack to get the confidence interval to play nice...
          # Require at least three points.
          if (a[:,k]>0).sum() >= 3:
              parabola = Parabola(np.insert(self.distance_modulus_array,0,0.), 
                                  np.insert(a[:,k],0,0.) )
              lo,hi = np.array(parabola.confidenceInterval())
              err['distance_modulus'] = self.distance_modulus_array[j] + (hi-lo)/2.*np.array([-1.,1.])
  
          # ADW: Could estimate lon and lat from the grid.
          # This is just concept right now...
          if (a[j,:]>0).sum() >= 10:
              delta_ts = 2*(a[j,k] - a[j,:])
              pix = np.where(a[j,:][delta_ts < 2.71])[0]
              lons = self.roi.pixels_target.lon[pix]
              lats = self.roi.pixels_target.lat[pix]
              err['lon'] = np.array([ np.min(lons),np.max(lons)])
              err['lat'] = np.array([ np.min(lats),np.max(lats)])
  
          return err