diff --git a/src/utils.js b/src/utils.js
--- a/src/utils.js
+++ b/src/utils.js
@@ -18,9 +18,9 @@ const monthDiff = (a, b) => {
   // function from moment.js in order to keep the same result
   if (a.date() < b.date()) return -monthDiff(b, a)
   const wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month())
-  const anchor = a.add(wholeMonthDiff, C.M)
+  const anchor = a.clone().add(wholeMonthDiff, C.M)
   const c = b - anchor < 0
-  const anchor2 = a.add(wholeMonthDiff + (c ? -1 : 1), C.M)
+  const anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M)
   return +(-(wholeMonthDiff + ((b - anchor) / (c ? (anchor - anchor2) :
     (anchor2 - anchor)))) || 0)
 }

diff --git a/test/plugin/badMutable.test.js b/test/plugin/badMutable.test.js
--- a/test/plugin/badMutable.test.js
+++ b/test/plugin/badMutable.test.js
@@ -164,6 +164,16 @@ it('Locale', () => {
   expect(d.format(format)).toBe(m.format(format))
 })
 
+it('Diff', () => {
+  const d = dayjs()
+  const m = moment()
+  const unit = 'year'
+  const d2 = d.clone().add(1, unit)
+  const m2 = m.clone().add(1, unit)
+  expect(d.diff(d2, unit)).toBe(-1)
+  expect(m.diff(m2, unit)).toBe(-1)
+})
+
 it('isAfter isBefore isSame', () => {
   const d = dayjs()
   const format = dayjs().format()

RelativeTime plugin bug while using BadMutable plugin
**Describe the bug**
When I use RelativeTime plugin with BadMutable plugin in my react project, I get wrong answer.

For Example: The time variable gets `in infinity years` instead of `4 months ago`.
```javascript
import React from 'react';
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
import badMutable from 'dayjs'/plugin/badMutable';

dayjs.extend(relativeTime);
dayjs.extend(badMutable);

const App = () => {
    // 1588262400000 stands for 2020-05-1
    const time = dayjs(new Date(1588262400000)).fromNow();
    return <div>{time}</div>
}
```

**Expected behavior**
As above, the time variable should be `4 months ago`.

**Information**
 - Day.js Version: 1.8.34
 - OS: MAC
 - Browser: Chrome 83
 - Time zone: 2020-08-22 China Beijing


test/timezone.test.js(1) test/timezone.test.js(2) test/timezone.test.js(3) test/timezone.test.js(4)
test/plugin/badMutable.test.js