asymmetric can be good in linear change, but with longer sampling average it’s used with an amplifier. So they put too much in the same basket.
the 90 block amplify the drop and they get >10 times 20% decrease in a row, then a lot of 1% to go back to high diff where it begin to pass over the 30seconds between block so they let the time between block becomes a bit long for some times(probably with some hash power remove from the network to help as it pass from ~30 sec to around 1 minutes at similar diff. of 14K). so longer time between block begins to accumulate in the 90 block until it get out the fast block found during the ramp up at 1% that where every 10-20 seconds. so short time between block that are 90 old are replace by 1 minutes blocks so several blocks with longer time between block enter the 90 blocks sample and 20% begins to be applied every 4 block until the average 30 seconds is pass over to get new block at 10-20 seconds to compensate for older one. but many -20% are done until they balance the 90 blocks (ex: 30 X 1 minute + 60 X15 sec. = 45 minutes = 30 sec average) to 30 sec average. so they go to 14000 diff back to 1000 and then ramp up 1% at a time back to 14K over a pretty long time with full hash power to maximize block.
the 90 block sampling are a FIFO(first in first out) so older time get out to make place for new blocks, but blocks are used ~22 times in the calculation.
note: this is possibly also amplified by someone playing with block 10 minutes in the future that get 10-20% of the blocks.