struct annotation *notes = symbol__annotation(sym);
 
                for (i = 0; i < al->data_nr; i++) {
-                       struct annotation_data *data = &al->data[i];
+                       double percent;
+
+                       percent = annotation_data__percent(&al->data[i],
+                                                          PERCENT_HITS_LOCAL);
 
-                       if (data->percent > max_percent)
-                               max_percent = data->percent;
+                       if (percent > max_percent)
+                               max_percent = percent;
                }
 
                if (al->data_nr > nr_percent)
 
                for (i = 0; i < nr_percent; i++) {
                        struct annotation_data *data = &al->data[i];
+                       double percent;
 
-                       color = get_percent_color(data->percent);
+                       percent = annotation_data__percent(data, PERCENT_HITS_LOCAL);
+                       color = get_percent_color(percent);
 
                        if (symbol_conf.show_total_period)
                                color_fprintf(stdout, color, " %11" PRIu64,
                                color_fprintf(stdout, color, " %7" PRIu64,
                                              data->he.nr_samples);
                        else
-                               color_fprintf(stdout, color, " %7.2f", data->percent);
+                               color_fprintf(stdout, color, " %7.2f", percent);
                }
 
                printf(" : ");
        if (sym_hist->nr_samples) {
                data->he.period     = period;
                data->he.nr_samples = hits;
-               data->percent = 100.0 * hits / sym_hist->nr_samples;
+               data->percent[PERCENT_HITS_LOCAL] = 100.0 * hits / sym_hist->nr_samples;
        }
 }
 
 
                ret = strcmp(iter->path, al->path);
                if (ret == 0) {
-                       for (i = 0; i < al->data_nr; i++)
-                               iter->data[i].percent_sum += al->data[i].percent;
+                       for (i = 0; i < al->data_nr; i++) {
+                               iter->data[i].percent_sum += annotation_data__percent(&al->data[i],
+                                                                                     PERCENT_HITS_LOCAL);
+                       }
                        return;
                }
 
                        p = &(*p)->rb_right;
        }
 
-       for (i = 0; i < al->data_nr; i++)
-               al->data[i].percent_sum = al->data[i].percent;
+       for (i = 0; i < al->data_nr; i++) {
+               al->data[i].percent_sum = annotation_data__percent(&al->data[i],
+                                                                  PERCENT_HITS_LOCAL);
+       }
 
        rb_link_node(&al->rb_node, parent, p);
        rb_insert_color(&al->rb_node, root);
                int i;
 
                for (i = 0; i < al->data_nr; i++) {
-                       struct annotation_data *data;
+                       double percent;
 
-                       data = &al->data[i];
+                       percent = annotation_data__percent(&al->data[i],
+                                                          PERCENT_HITS_LOCAL);
 
-                       if (data->percent > percent_max)
-                               percent_max = data->percent;
+                       if (percent > percent_max)
+                               percent_max = percent;
                }
 
                if (percent_max <= 0.5)
        int i;
 
        for (i = 0; i < notes->nr_events; i++) {
-               if (al->data[i].percent > percent_max)
-                       percent_max = al->data[i].percent;
+               double percent;
+
+               percent = annotation_data__percent(&al->data[i],
+                                                  PERCENT_HITS_LOCAL);
+
+               if (percent > percent_max)
+                       percent_max = percent;
        }
 
        return percent_max;
                int i;
 
                for (i = 0; i < notes->nr_events; i++) {
-                       obj__set_percent_color(obj, al->data[i].percent, current_entry);
+                       double percent;
+
+                       percent = annotation_data__percent(&al->data[i],
+                                                          PERCENT_HITS_LOCAL);
+
+                       obj__set_percent_color(obj, percent, current_entry);
                        if (notes->options->show_total_period) {
                                obj__printf(obj, "%11" PRIu64 " ", al->data[i].he.period);
                        } else if (notes->options->show_nr_samples) {
                                obj__printf(obj, "%6" PRIu64 " ",
                                                   al->data[i].he.nr_samples);
                        } else {
-                               obj__printf(obj, "%6.2f ",
-                                                  al->data[i].percent);
+                               obj__printf(obj, "%6.2f ", percent);
                        }
                }
        } else {