+ double first_value_time_double;
+ double interval_double;
+ double interval_requested;
+ size_t points_consolidate;
+
+ first_value_time_double = ((double) first_value_time.tv_sec)
+ + (((double) first_value_time.tv_nsec) / 1000000000.0);
+ interval_double = ((double) interval.tv_sec)
+ + (((double) interval.tv_nsec) / 1000000000.0);
+ interval_requested = ((double) data->interval.tv_sec)
+ + (((double) data->interval.tv_nsec) / 1000000000.0);
+
+ if (interval_requested < (2.0 * interval_double))
+ points_consolidate = 1;
+ else
+ points_consolidate = (size_t) (interval_requested / interval_double);
+ assert (points_consolidate >= 1);
+
+ if (points_consolidate > 1)
+ {
+ size_t offset = data_points_num % points_consolidate;
+
+ first_value_time_double += ((double) offset) * interval_double;
+ interval_double *= ((double) points_consolidate);
+ }
+
+ yajl_gen_map_open (data->handler);
+
+ yajl_gen_string_cast (data->handler, "first_value_time", strlen ("first_value_time"));
+ yajl_gen_double (data->handler, first_value_time_double);
+
+ yajl_gen_string_cast (data->handler, "interval", strlen ("interval"));
+ yajl_gen_double (data->handler, interval_double);
+
+ yajl_gen_string_cast (data->handler, "data", strlen ("data"));