diff --git a/lib/versioning/pep440/range.js b/lib/versioning/pep440/range.js
index 5e9cb17f5f4904eac70c6ba95dea497539aa8811..dbfa449b2a84f1638a72d76e63a731fa8eae09d8 100644
--- a/lib/versioning/pep440/range.js
+++ b/lib/versioning/pep440/range.js
@@ -2,10 +2,10 @@ module.exports = {
   getNewValue,
 };
 
-function getNewValue(config, fromVersion, toVersion) {
-  if (config.rangeStrategy === 'pin' || config.currentValue.startsWith('==')) {
+function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
+  if (rangeStrategy === 'pin' || currentValue.startsWith('==')) {
     return '==' + toVersion;
   }
-  logger.warn('Unsupported currentValue: ' + config.currentValue);
+  logger.warn('Unsupported currentValue: ' + currentValue);
   return toVersion;
 }
diff --git a/lib/versioning/semver-composer/index.js b/lib/versioning/semver-composer/index.js
index 0148e9f0b2522230e3b8cac49f95abe2c691f05c..67d773c563b0d9721d1618b54cdffb6d8a7f01b2 100644
--- a/lib/versioning/semver-composer/index.js
+++ b/lib/versioning/semver-composer/index.js
@@ -26,13 +26,17 @@ const maxSatisfyingVersion = (versions, range) =>
 const minSatisfyingVersion = (versions, range) =>
   semver.minSatisfyingVersion(versions, composer2npm(range));
 
-function getNewValue(config, fromVersion, toVersion) {
-  const { currentValue } = config;
+function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
   if (
     semver.isValid(currentValue) &&
     composer2npm(currentValue) === currentValue
   ) {
-    return semver.getNewValue(config, fromVersion, toVersion);
+    return semver.getNewValue(
+      currentValue,
+      rangeStrategy,
+      fromVersion,
+      toVersion
+    );
   }
   const toMajor = semver.getMajor(toVersion);
   const toMinor = semver.getMinor(toVersion);
diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js
index 8a7bf465977ada4a2412487591c814a52b91c982..ce3e62b2ee8fb21fb67ac74ed1e0c78895ced304 100644
--- a/lib/versioning/semver/range.js
+++ b/lib/versioning/semver/range.js
@@ -5,8 +5,7 @@ module.exports = {
   getNewValue,
 };
 
-function getNewValue(config, fromVersion, toVersion) {
-  const { currentValue, rangeStrategy } = config;
+function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) {
   if (rangeStrategy === 'pin' || isVersion(currentValue)) {
     return toVersion;
   }
@@ -14,7 +13,8 @@ function getNewValue(config, fromVersion, toVersion) {
   const element = parsedRange[parsedRange.length - 1];
   if (rangeStrategy === 'widen') {
     const newValue = getNewValue(
-      { ...config, rangeStrategy: 'replace' },
+      currentValue,
+      'replace',
       fromVersion,
       toVersion
     );
@@ -40,7 +40,7 @@ function getNewValue(config, fromVersion, toVersion) {
   }
   // console.log(range);
   // Simple range
-  if (config.rangeStrategy === 'bump') {
+  if (rangeStrategy === 'bump') {
     if (parsedRange.length === 1) {
       if (element.operator === '^') {
         const split = currentValue.split('.');
diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js
index 3609e99e4495aa78f2886dda59a25f4c0d8abb15..0b314fa1c0181f2c201b5871c432f3e40368a3e5 100644
--- a/lib/workers/repository/process/lookup/index.js
+++ b/lib/workers/repository/process/lookup/index.js
@@ -74,7 +74,12 @@ async function lookupUpdates(config) {
     updates.push({
       type: 'pin',
       isPin: true,
-      newValue: getNewValue(config, fromVersion, fromVersion),
+      newValue: getNewValue(
+        currentValue,
+        rangeStrategy,
+        fromVersion,
+        fromVersion
+      ),
       newMajor: getMajor(fromVersion),
     });
   }
@@ -91,7 +96,12 @@ async function lookupUpdates(config) {
   const buckets = {};
   for (const toVersion of filteredVersions) {
     const update = { fromVersion, toVersion };
-    update.newValue = getNewValue(config, fromVersion, toVersion);
+    update.newValue = getNewValue(
+      currentValue,
+      rangeStrategy,
+      fromVersion,
+      toVersion
+    );
     if (!update.newValue || update.newValue === currentValue) {
       continue; // eslint-disable-line no-continue
     }
diff --git a/lib/workers/repository/process/lookup/rollback.js b/lib/workers/repository/process/lookup/rollback.js
index c62cef0a3cb15f4c3a768c1d0129cb1a712f0ae9..91506c401698dafb1388da68f4240d3156791215 100644
--- a/lib/workers/repository/process/lookup/rollback.js
+++ b/lib/workers/repository/process/lookup/rollback.js
@@ -35,7 +35,7 @@ function getRollbackUpdate(config, versions) {
   lessThanVersions.sort(sortVersions);
   const toVersion = lessThanVersions.pop();
   let fromVersion;
-  const newValue = getNewValue(config, fromVersion, toVersion);
+  const newValue = getNewValue(currentValue, 'replace', fromVersion, toVersion);
   return {
     type: 'rollback',
     branchName:
diff --git a/test/versioning/pep440.spec.js b/test/versioning/pep440.spec.js
index df6ec7d434ca9780f47c6e38296933a9935bea85..83998bb82fc22d8555ebcdd9ea9759499b8e5b63 100644
--- a/test/versioning/pep440.spec.js
+++ b/test/versioning/pep440.spec.js
@@ -80,13 +80,13 @@ describe('pep440.minSatisfyingVersion(versions, range)', () => {
 
 describe('pep440.getNewValue()', () => {
   it('returns double equals', () => {
-    expect(
-      pep440.getNewValue({ currentValue: '==1.0.0' }, '1.0.0', '1.0.1')
-    ).toBe('==1.0.1');
+    expect(pep440.getNewValue('==1.0.0', 'replace', '1.0.0', '1.0.1')).toBe(
+      '==1.0.1'
+    );
   });
   it('returns version', () => {
-    expect(
-      pep440.getNewValue({ currentValue: '>=1.0.0' }, '1.0.0', '1.0.1')
-    ).toBe('1.0.1');
+    expect(pep440.getNewValue('>=1.0.0', 'replace', '1.0.0', '1.0.1')).toBe(
+      '1.0.1'
+    );
   });
 });
diff --git a/test/versioning/semver-composer.spec.js b/test/versioning/semver-composer.spec.js
index 7cd77f71953affb07d980214ab705ed0d81b02de..637818cade319005e8fc59cdbf9fdb8ae284d6e4 100644
--- a/test/versioning/semver-composer.spec.js
+++ b/test/versioning/semver-composer.spec.js
@@ -62,41 +62,33 @@ describe('semver.matches()', () => {
 });
 describe('semver.getNewValue()', () => {
   it('bumps short caret to same', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '^1.0', rangeStrategy: 'bump' },
-        '1.0.0',
-        '1.0.7'
-      )
-    ).toEqual('^1.0');
+    expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.0.7')).toEqual(
+      '^1.0'
+    );
   });
   it('handles tilde zero', () => {
-    expect(
-      semver.getNewValue({ currentValue: '~0.2' }, '0.2.0', '0.3.0')
-    ).toEqual('~0.3');
-    expect(
-      semver.getNewValue({ currentValue: '~0.2' }, '0.2.0', '1.1.0')
-    ).toEqual('~1.0');
+    expect(semver.getNewValue('~0.2', 'replace', '0.2.0', '0.3.0')).toEqual(
+      '~0.3'
+    );
+    expect(semver.getNewValue('~0.2', 'replace', '0.2.0', '1.1.0')).toEqual(
+      '~1.0'
+    );
   });
   it('handles tilde major', () => {
-    expect(
-      semver.getNewValue({ currentValue: '~4' }, '4.0.0', '4.2.0')
-    ).toEqual('~4');
-    expect(
-      semver.getNewValue({ currentValue: '~4' }, '4.0.0', '5.1.0')
-    ).toEqual('~5');
+    expect(semver.getNewValue('~4', 'replace', '4.0.0', '4.2.0')).toEqual('~4');
+    expect(semver.getNewValue('~4', 'replace', '4.0.0', '5.1.0')).toEqual('~5');
   });
   it('handles tilde minor', () => {
-    expect(
-      semver.getNewValue({ currentValue: '~4.0' }, '4.0.0', '4.2.0')
-    ).toEqual('~4.2');
-    expect(
-      semver.getNewValue({ currentValue: '~4.0' }, '4.0.0', '5.1.0')
-    ).toEqual('~5.1');
+    expect(semver.getNewValue('~4.0', 'replace', '4.0.0', '4.2.0')).toEqual(
+      '~4.2'
+    );
+    expect(semver.getNewValue('~4.0', 'replace', '4.0.0', '5.1.0')).toEqual(
+      '~5.1'
+    );
   });
   it('returns toVersion if unsupported', () => {
-    expect(
-      semver.getNewValue({ currentValue: '+4.0.0' }, '4.0.0', '4.2.0')
-    ).toEqual('4.2.0');
+    expect(semver.getNewValue('+4.0.0', 'replace', '4.0.0', '4.2.0')).toEqual(
+      '4.2.0'
+    );
   });
 });
diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js
index 451a5a012690176fbf9277918e6ada01a4a54134..2ee12a224e36cb299dcd43dcc384bad1efc2300c 100644
--- a/test/versioning/semver.spec.js
+++ b/test/versioning/semver.spec.js
@@ -41,84 +41,44 @@ describe('semver.isSingleVersion()', () => {
 });
 describe('semver.getNewValue()', () => {
   it('bumps equals', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '=1.0.0', rangeStrategy: 'bump' },
-        '1.0.0',
-        '1.1.0'
-      )
-    ).toEqual('=1.1.0');
+    expect(semver.getNewValue('=1.0.0', 'bump', '1.0.0', '1.1.0')).toEqual(
+      '=1.1.0'
+    );
   });
   it('bumps short caret to same', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '^1.0', rangeStrategy: 'bump' },
-        '1.0.0',
-        '1.0.7'
-      )
-    ).toEqual('^1.0');
+    expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.0.7')).toEqual(
+      '^1.0'
+    );
   });
   it('bumps short caret to new', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '^1.0', rangeStrategy: 'bump' },
-        '1.0.0',
-        '1.1.7'
-      )
-    ).toEqual('^1.1');
+    expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.1.7')).toEqual(
+      '^1.1'
+    );
   });
   it('bumps short tilde', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '~1.0', rangeStrategy: 'bump' },
-        '1.0.0',
-        '1.1.7'
-      )
-    ).toEqual('~1.1');
+    expect(semver.getNewValue('~1.0', 'bump', '1.0.0', '1.1.7')).toEqual(
+      '~1.1'
+    );
   });
   it('updates naked caret', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '^1', rangeStrategy: 'bump' },
-        '1.0.0',
-        '2.1.7'
-      )
-    ).toEqual('^2');
+    expect(semver.getNewValue('^1', 'bump', '1.0.0', '2.1.7')).toEqual('^2');
   });
   it('bumps naked tilde', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '~1', rangeStrategy: 'bump' },
-        '1.0.0',
-        '1.1.7'
-      )
-    ).toEqual('~1');
+    expect(semver.getNewValue('~1', 'bump', '1.0.0', '1.1.7')).toEqual('~1');
   });
   it('replaces equals', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '=1.0.0', rangeStrategy: 'replace' },
-        '1.0.0',
-        '1.1.0'
-      )
-    ).toEqual('=1.1.0');
+    expect(semver.getNewValue('=1.0.0', 'replace', '1.0.0', '1.1.0')).toEqual(
+      '=1.1.0'
+    );
   });
   it('handles long asterisk', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '1.0.*', rangeStrategy: 'replace' },
-        '1.0.0',
-        '1.1.0'
-      )
-    ).toEqual('1.1.*');
+    expect(semver.getNewValue('1.0.*', 'replace', '1.0.0', '1.1.0')).toEqual(
+      '1.1.*'
+    );
   });
   it('handles short asterisk', () => {
-    expect(
-      semver.getNewValue(
-        { currentValue: '1.*', rangeStrategy: 'replace' },
-        '1.0.0',
-        '2.1.0'
-      )
-    ).toEqual('2.*');
+    expect(semver.getNewValue('1.*', 'replace', '1.0.0', '2.1.0')).toEqual(
+      '2.*'
+    );
   });
 });