/// <summary>
        /// Returns true if more data is required for the next interval.
        /// </summary>
        public override bool WaitForMoreData(TimeSlice bucket, AggregateState state)
        {
            if (!state.HasTerminated)
            {
                if (bucket.ContainsTime(state.LatestTimestamp))
                {
                    return(true);
                }

                if (IsReverseAggregation)
                {
                    if (state.LatestTimestamp < bucket.To)
                    {
                        return(false);
                    }
                }
                else
                {
                    if (state.LatestTimestamp > bucket.To)
                    {
                        return(false);
                    }
                }

                if ((bucket.EarlyBound.Value == null) || (bucket.LateBound.Value == null))
                {
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// Returns true if more data is required for the next interval.
        /// </summary>
        public override bool WaitForMoreData(TimeSlice bucket, AggregateState state)
        {
            var wait = false;

            if (!state.HasTerminated)
            {
                if (bucket.ContainsTime(state.LatestTimestamp))
                {
                    wait = true;
                }
            }
            return(wait);
        }