diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts
index 6481de5b3835bb7ab89da0ace76aa31eea73f60f..2c3b66bfb129e7e3f8835e7e284000bafd4fa77f 100644
--- a/lib/versioning/hex/index.spec.ts
+++ b/lib/versioning/hex/index.spec.ts
@@ -198,7 +198,7 @@ describe(getName(__filename), () => {
         currentVersion: '1.2.3',
         newVersion: '2.0.7',
       })
-    ).toEqual('>= 1.0.0 or <= 2.0.7');
+    ).toEqual('>= 1.0.0 or <= 2.0.0');
     expect(
       hexScheme.getNewValue({
         currentValue: '>= 1.0.0 or <= 2.0.0',
diff --git a/lib/versioning/npm/index.spec.ts b/lib/versioning/npm/index.spec.ts
index 09b1d752137978581b2ce3d61f14886cb9a82638..73e5f5bd00a3a55e28252ae490eaba58d5f70e46 100644
--- a/lib/versioning/npm/index.spec.ts
+++ b/lib/versioning/npm/index.spec.ts
@@ -325,4 +325,38 @@ describe('semver.getNewValue()', () => {
       })
     ).toEqual('>= 1.0.1 < 2');
   });
+  it('widens', () => {
+    expect(
+      semver.getNewValue({
+        currentValue: '<=1.2.3',
+        rangeStrategy: 'widen',
+        currentVersion: '1.0.0',
+        newVersion: '1.2.3',
+      })
+    ).toEqual('<=1.2.3');
+    expect(
+      semver.getNewValue({
+        currentValue: '<=1.2.3',
+        rangeStrategy: 'widen',
+        currentVersion: '1.0.0',
+        newVersion: '1.2.4',
+      })
+    ).toEqual('<=1.2.4');
+    expect(
+      semver.getNewValue({
+        currentValue: '>=1.2.3',
+        rangeStrategy: 'widen',
+        currentVersion: '1.0.0',
+        newVersion: '1.2.3',
+      })
+    ).toEqual('>=1.2.3');
+    expect(
+      semver.getNewValue({
+        currentValue: '>=1.2.3',
+        rangeStrategy: 'widen',
+        currentVersion: '1.0.0',
+        newVersion: '1.2.1',
+      })
+    ).toEqual('>=1.2.3 || 1.2.1');
+  });
 });
diff --git a/lib/versioning/npm/range.ts b/lib/versioning/npm/range.ts
index 46cfcfcdcc14bb7fe76b440dbb992886b0692497..8bccb58811931f09147200a13e1f9a1cbddcfe20 100644
--- a/lib/versioning/npm/range.ts
+++ b/lib/versioning/npm/range.ts
@@ -75,6 +75,9 @@ export function getNewValue({
   const parsedRange = parseRange(currentValue);
   const element = parsedRange[parsedRange.length - 1];
   if (rangeStrategy === 'widen') {
+    if (satisfies(newVersion, currentValue)) {
+      return currentValue;
+    }
     const newValue = getNewValue({
       currentValue,
       rangeStrategy: 'replace',