code: def geom_find_rotsymm(g, atwts, ax, improp, \
          nmax=_DEF.SYMM_MATCH_NMAX, \
          tol=_DEF.SYMM_MATCH_TOL):
      
  
      # Imports
      import numpy as np
  
      # Vectorize the geometry
      g = make_nd_vec(g, nd=None, t=np.float64, norm=False)
  
      # Ensure a 3-D axis vector
      ax = make_nd_vec(ax, nd=3, t=np.float64, norm=True)
  
      # Loop downward either until a good axis is found or nval < 1
      #  Should never traverse below n == 1 for regular rotation check;
      #  could for improper, though.
      nval = nmax + 1
      nfac = 1.0
      while nfac > tol and nval > 0:
          nval = nval - 1
          try:
              nfac = geom_symm_match(g, atwts, ax, \
                                      2*np.pi/nval, improp)
  
          except ZeroDivisionError as zde:
              # If it's because nval == zero, ignore. Else re-raise.
              if nval > 0:
                  raise zde
              ## end if
          ## end try
      ## loop
  
      # Should be good to return
      return nval, nfac
docs: Identify highest-order symmetry for a geometry on a given axis.
  
      Regular and improper axes possible.
  
      .. todo:: Complete geom_find_rotsymm docstring