**Describe the unexpected behaviour**

The `WITH FILL` modifier on an `ORDER BY` clause does not accept a negative
`INTERVAL` as a `STEP`, when the `ORDER BY` is applied to a `Date` column
and the order is `DESC`. This is unexpected because negative steps work
fine on numeric columns sorted in descending order.

**How to reproduce**

* Which ClickHouse server version to use

22.4.4.3

* Queries to run that lead to unexpected result

```sql
SELECT d
FROM
(
  SELECT toDate(1) AS d
)
ORDER BY d DESC WITH FILL FROM toDate(3) TO toDate(0) STEP INTERVAL -1 DAY
;
```

```
Received exception from server (version 22.4.4):
Code: 475. DB::Exception: Received from localhost:9000. DB::Exception: Value of step is to low (-86400 seconds). Must be >= 1 day. (INVALID_WITH_FILL_EXPRESSION)
```

**Expected behavior**

Like numeric columns, `Date` should also support negative steps.

```sql
SELECT n
FROM
(
    SELECT 1 AS n
)
ORDER BY n DESC WITH FILL FROM 3 TO 0 STEP -1

┌─n─┐
│ 3 │
│ 2 │
│ 1 │
└───┘
```

for (const auto & [col_pos, name_type] : input_positions)
                {
                    MutableColumnPtr column = name_type.type->createColumn();
                    auto [res_columns, pos] = res_map[col_pos];
                    size_t size = (*res_columns)[pos]->size();
                    if (size == 0) 
                    {
                        
                        if (last_row.size() > col_pos && !last_row[col_pos]->empty())
                            column->insertFrom(*last_row[col_pos], 0);
                        else
                            column->insertDefault();
                    }
                    else 
                        column->insertFrom(*(*res_columns)[pos], size - 1);
                    interpolate_block.insert({std::move(column), name_type.type, name_type.name});
                }
                interpolate_actions->execute(interpolate_block);
            }
            else 
            {
                size_t n = 1;
                interpolate_actions->execute(interpolate_block, n);
            }
        }
    };
    if (generate_suffix)
    {
        const auto & empty_columns = input.getHeader().getColumns();