+
+ for (size_t k = 0; k < nest->n; k++)
+ if (k != nest->scale_idx)
+ nest->areas[at][nest->n_areas[at]++] = k;
+
+ int n_drop;
+ switch (at)
+ {
+ case CTAT_SUBTABLE:
+ if (t->clabels_from_axis == PIVOT_AXIS_LAYER)
+ n_drop = a != PIVOT_AXIS_LAYER;
+ else if (t->clabels_to_axis != PIVOT_AXIS_LAYER)
+ n_drop = a == t->clabels_from_axis ? 2 : 0;
+ else if (a == t->clabels_from_axis)
+ n_drop = -1;
+ else
+ n_drop = a != PIVOT_AXIS_LAYER;
+ break;
+
+ case CTAT_LAYERROW:
+ case CTAT_LAYERCOL:
+ n_drop = a == ata && t->label_axis[ata] == atb;
+ break;
+
+ case CTAT_ROW:
+ case CTAT_COL:
+ if (a == ata)
+ n_drop = t->label_axis[ata] == atb;
+ else if (a != atb)
+ n_drop = 0;
+ else if (t->clabels_from_axis == atb)
+ n_drop = -1;
+ else if (t->clabels_to_axis != atb)
+ n_drop = 1;
+ else
+ n_drop = 0;
+ break;
+
+ case CTAT_LAYER:
+ case CTAT_TABLE:
+ n_drop = 0;
+ break;
+ }
+
+ if (n_drop < 0)