Reproduces on master.

```
SELECT toDateTime64('2021-03-22', 3, 'Asia/Tehran')

Query id: 26f7c373-f473-4209-8976-6ada79a8627f

┌─toDateTime64('2021-03-22', 3, 'Asia/Tehran')─┐
│                      2157-04-28 06:28:16.000 │
└──────────────────────────────────────────────┘
```
{
        return lut[toLUTIndex(v)];
    }
    template <typename T, typename Divisor>
    inline T roundDown(T x, Divisor divisor) const
    {
        static_assert(std::is_integral_v<T> && std::is_integral_v<Divisor>);
        assert(divisor > 0);
        if (likely(offset_is_whole_number_of_hours_during_epoch))
        {
            if (likely(x >= 0))
                return x / divisor * divisor;
            
            
            return (x + 1 - divisor) / divisor * divisor;
        }
        Time date = find(x).date;
        return date + (x - date) / divisor * divisor;
    }
public:
    const std::string & getTimeZone() const { return time_zone; }
    
    auto getOffsetAtStartOfEpoch() const { return offset_at_start_of_epoch; }
    auto getTimeOffsetAtStartOfLUT() const { return offset_at_start_of_lut; }
    auto getDayNumOffsetEpoch() const { return daynum_offset_epoch; }
    
    inline ExtendedDayNum toDayNum(ExtendedDayNum d) const