make sure vdef calcs only calc as far as originally requested.
[rrdtool.git] / src / rrd_graph.c
index 480041f..760e3a3 100644 (file)
@@ -4510,15 +4510,18 @@ int vdef_calc(
     graph_desc_t *src, *dst;
     rrd_value_t *data;
     long      step, steps;
+    unsigned long end;
 
     dst = &im->gdes[gdi];
     src = &im->gdes[dst->vidx];
     data = src->data + src->ds;
-    steps = (src->end - src->start) / src->step;
+    end = src->end_orig % src->step == 0 ? src->end_orig : (src->end_orig + src->step - src->end_orig % src->step);
+
+    steps = (end - src->start) / src->step;
 #if 0
     printf
         ("DEBUG: start == %lu, end == %lu, %lu steps\n",
-         src->start, src->end, steps);
+         src->start, src->end_orig, steps);
 #endif
     switch (dst->vf.op) {
     case VDEF_PERCENT:{