code: def make_fits_keys_dict(keys):
      
  
      key_dict = {}
      new_keys = []
      for key in keys:
          # converts to valid FITS key according to reference [1] above
          fits_key = valid_fits_key(key)
          num_digits = 1
          i = -1
          i_max = 9
          while fits_key in new_keys:
              i += 1
              if i > i_max:
                  i = 0
                  i_max = i_max * 10 + 9
                  num_digits += 1
              fits_key = fits_key[:(8 - num_digits)] + (("%0{0:d}d".format(num_digits)) % i)
  
          key_dict[key] = fits_key
          new_keys.append(fits_key)
  
      return key_dict
docs: Returns a dictionary to translate to unique FITS header keys up to 8 characters long
  
      This is similar to Windows making up 8-character names for filenames that
      are longer than this
  
      "The keyword names may be up to 8 characters long and can only contain
      uppercase letters A to Z, the digits 0 to 9, the hyphen, and the underscore
      character." [1]
  
      Arguments:
          keys -- list of strings
  
      Returns:
          dictionary whose keys are the elements in the "keys" argument, and whose
          values are made-up uppercase names
  
      References:
          [1] http://fits.gsfc.nasa.gov/fits_primer.html