If I understand correctly, you don't need additional logic. Just remove <code>EvalContextHeapRemoveHard(ctx, MONTH_TEXT[i])</code>. On the first iteration, the second call to <code>EvalContextHeapRemoveHard()</code> does the exact same thing as the first call. On the second iteration, however, the first call to <code>EvalContextHeapRemoveHard()</code> repeats what it did in the first iteration and the second one adds GMT. I'm arguing that the first call is redundant.