## Bug description

The new funnels time conversion endpoint sometimes returns bins with negative time values. This makes it difficult to reflect accurate time conversion funnels data on the frontend. @Twixes @neilkakkar 

<img width="379" alt="Screen Shot 2021-07-13 at 9 14 42 PM" src="https://user-images.githubusercontent.com/13460330/125560350-3ef2eb03-5fc5-4c89-a0ab-988c945d7d87.png">

Example CH localhost [link ](http://localhost:8000/insights?insight=FUNNELS&properties=%5B%5D&filter_test_accounts=false&interval=day&events=%5B%7B%22id%22%3A%22%24pageview%22%2C%22name%22%3A%22%24pageview%22%2C%22type%22%3A%22events%22%2C%22order%22%3A0%7D%2C%7B%22id%22%3A%22%24pageview%22%2C%22name%22%3A%22%24pageview%22%2C%22type%22%3A%22events%22%2C%22order%22%3A1%7D%2C%7B%22id%22%3A%22%24pageview%22%2C%22name%22%3A%22%24pageview%22%2C%22type%22%3A%22events%22%2C%22order%22%3A2%7D%5D&display=FunnelsTimeToConvert&actions=%5B%5D&new_entity=%5B%5D) to reproduce bug.

Request Payload

<img width="612" alt="Screen Shot 2021-07-13 at 9 19 06 PM" src="https://user-images.githubusercontent.com/13460330/125560592-9e2a0670-606c-485a-a102-7e085c72f225.png">


## Expected behavior

No negative time bin values. 

## How to reproduce

1. Navigate to new funnels time conversion page. Make sure to turn on this FF: `4535-funnel-bar-viz`
2. Add a few identical actions/events
3. Open up network requests to see the response to `api/funnels`

## Environment

- [X] PostHog Cloud
- [ ] self-hosted PostHog, version/commit: _please provide_

#### *Thank you* for your bug report – we love squashing them!

ee/clickhouse/queries/funnels/funnel_time_to_convert.py
if not (0 < to_step < len(self._filter.entities)):
            raise ValidationError(
                f'Filter parameter {FUNNEL_TO_STEP} can only be one of {", ".join(map(str, range(1, len(self._filter.entities))))} for time to convert!'
            )
        steps_average_conversion_time_identifiers = [
            f"step_{step+1}_average_conversion_time_inner" for step in range(from_step, to_step)
        ]
        steps_average_conversion_time_expression_sum = " + ".join(steps_average_conversion_time_identifiers)
        query = f"""
            WITH
                step_runs AS (
                    {steps_per_person_query}
                ),
                histogram_params AS (
                    -- Binning ensures that each sample belongs to a bin in results
                    -- If bin_count is not a custom number, it's calculated in bin_count_expression
                    SELECT
                        floor(min({steps_average_conversion_time_expression_sum})) AS from_seconds,
                        ceil(max({steps_average_conversion_time_expression_sum})) AS to_seconds,
                        round(avg({steps_average_conversion_time_expression_sum}), 2) AS average_conversion_time,
                        {bin_count_expression or ""}
                        ceil((to_seconds - from_seconds) / {bin_count_identifier}) AS bin_width_seconds_raw,
                        -- Use 60 seconds as fallback bin width in case of only one sample
                        if(bin_width_seconds_raw > 0, bin_width_seconds_raw, 60) AS bin_width_seconds
                    FROM step_runs
                ),
                -- Below CTEs make histogram_params columns available to the query below as straightforward identifiers
                ( SELECT bin_width_seconds FROM histogram_params ) AS bin_width_seconds,
                -- bin_count is only made available as an identifier if it had to be calculated
                {