def properMotionMaxError(G, vmini, extension=0.0):
  """
  Calculate the maximum proper motion errors from G and (V-I). These correspond to the sky regions with
  the largest astrometric errors.

  NOTE! THE ERRORS ARE FOR PROPER MOTIONS IN THE ICRS (I.E., RIGHT ASCENSION, DECLINATION). MAKE SURE
  YOUR SIMULATED ASTROMETRY IS ALSO ON THE ICRS.

  Parameters
  ----------

  G     - Value(s) of G-band magnitude.
  vmini - Value(s) of (V-I) colour.

  Keywords
  --------

  extension - Add this amount of years to the mission lifetime and scale the errors accordingly.

  Returns
  -------

  The maximum error in mu_alpha* and the error in mu_delta, in that order, in micro-arcsecond/year.
  """
  factor = errorScalingMissionLength(extension, -1.5)
  parallaxError = parallaxErrorSkyAvg(G, vmini)*factor
  indices = (parallaxError<_parallaxErrorMaxBright)
  parallaxError[indices] = _parallaxErrorMaxBright
  return _astrometricErrorFactors['muAlphaStar'].max()*parallaxError, \
         _astrometricErrorFactors['muDelta'].max()*parallaxError
Calculate the maximum proper motion errors from G and (V-I). These correspond to the sky regions with
  the largest astrometric errors.

  NOTE! THE ERRORS ARE FOR PROPER MOTIONS IN THE ICRS (I.E., RIGHT ASCENSION, DECLINATION). MAKE SURE
  YOUR SIMULATED ASTROMETRY IS ALSO ON THE ICRS.

  Parameters
  ----------

  G     - Value(s) of G-band magnitude.
  vmini - Value(s) of (V-I) colour.

  Keywords
  --------

  extension - Add this amount of years to the mission lifetime and scale the errors accordingly.

  Returns
  -------

  The maximum error in mu_alpha* and the error in mu_delta, in that order, in micro-arcsecond/year.