}
 
 static void annotation__calc_percent(struct annotation *notes,
-                                    struct perf_evsel *evsel, s64 len)
+                                    struct perf_evsel *leader, s64 len)
 {
        struct annotation_line *al, *next;
+       struct perf_evsel *evsel;
 
        list_for_each_entry(al, ¬es->src->source, node) {
                s64 end;
-               int i;
+               int i = 0;
 
                if (al->offset == -1)
                        continue;
                next = annotation_line__next(al, ¬es->src->source);
                end  = next ? next->offset : len;
 
-               for (i = 0; i < al->data_nr; i++) {
+               for_each_group_evsel(evsel, leader) {
                        struct annotation_data *data;
                        struct sym_hist *sym_hist;
 
-                       sym_hist = annotation__histogram(notes, evsel->idx + i);
-                       data = &al->data[i];
+                       BUG_ON(i >= al->data_nr);
+
+                       sym_hist = annotation__histogram(notes, evsel->idx);
+                       data = &al->data[i++];
 
                        calc_percent(sym_hist, data, al->offset, end);
                }
 
        return evsel->idx - evsel->leader->idx;
 }
 
+/* Iterates group WITHOUT the leader. */
 #define for_each_group_member(_evsel, _leader)                                         \
 for ((_evsel) = list_entry((_leader)->node.next, struct perf_evsel, node);     \
      (_evsel) && (_evsel)->leader == (_leader);                                        \
      (_evsel) = list_entry((_evsel)->node.next, struct perf_evsel, node))
 
+/* Iterates group WITH the leader. */
+#define for_each_group_evsel(_evsel, _leader)                                  \
+for ((_evsel) = _leader;                                                       \
+     (_evsel) && (_evsel)->leader == (_leader);                                        \
+     (_evsel) = list_entry((_evsel)->node.next, struct perf_evsel, node))
+
 static inline bool perf_evsel__has_branch_callstack(const struct perf_evsel *evsel)
 {
        return evsel->attr.branch_sample_type & PERF_SAMPLE_BRANCH_CALL_STACK;