cdm/src/main/java/ucar/nc2/ft/fmrc/FmrInv.java
void finish() {
    gridList = new ArrayList<>(uvHash.values());
    Collections.sort(gridList);

    // find the common coordinates
    for (GridVariable grid : gridList) {
      grid.finish();
    }

    // assign sequence number for time
    int seqno = 0;
    for (TimeCoord tc : timeCoords)
      tc.setId(seqno++);

    // assign sequence number for vertical coords with same name
    HashMap<String, List<VertCoord>> map = new HashMap<>();
    for (VertCoord vc : vertCoords) {
      List<VertCoord> list = map.get(vc.getName());
      if (list == null) {
        list = new ArrayList<>();
        map.put(vc.getName(), list);
      }
      list.add(vc);
    }
    for (List<VertCoord> list : map.values()) {
      if (list.size() > 0) {
        int count = 0;
        for (VertCoord vc : list) {
          if (count > 0) vc.setName(vc.getName()+count);
          count++;
        }
      }
    }

  }
void finish() {
    gridList = new ArrayList<>(uvHash.values());
    Collections.sort(gridList);

    // find the common coordinates
    for (GridVariable grid : gridList) {
      grid.finish();
    }

    // assign sequence number for time
    int seqno = 0;
    for (TimeCoord tc : timeCoords)
      tc.setId(seqno++);

    // assign sequence number for vertical coords with same name
    HashMap<String, List<VertCoord>> map = new HashMap<>();
    for (VertCoord vc : vertCoords) {
      List<VertCoord> list = map.get(vc.getName());
      if (list == null) {
        list = new ArrayList<>();
        map.put(vc.getName(), list);
      }
      list.add(vc);
    }
    for (List<VertCoord> list : map.values()) {
      if (list.size() > 0) {
        int count = 0;
        for (VertCoord vc : list) {
          if (count > 0) vc.setName(vc.getName()+count);
          count++;
        }
      }
    }

  }
call after adding all runs