diff --git a/lib/versioning/pep440/index.js b/lib/versioning/pep440/index.js
index aaf904a38fbbffc75cb8079b3940ae1ceb98e85b..1b1aca5275ebc2c393a84d9f936f5c56408d9f9d 100644
--- a/lib/versioning/pep440/index.js
+++ b/lib/versioning/pep440/index.js
@@ -22,8 +22,6 @@ const isStable = input => {
   return !version.is_prerelease;
 };
 
-const isRange = input => isValid(input) && !isVersion(input);
-
 // If this is left as an alias, inputs like "17.04.0" throw errors
 const isValid = input => validRange(input);
 
@@ -47,7 +45,6 @@ module.exports = {
   getMinor,
   isGreaterThan,
   isSingleVersion,
-  isRange,
   isStable,
   isValid,
   isVersion,
diff --git a/lib/versioning/semver/index.js b/lib/versioning/semver/index.js
index 716624d65d0d1eedbcb6c54ecd93b1e4381b1cdb..9668b2b14f0bae830b1f5edc613e7c1bfe5962cc 100644
--- a/lib/versioning/semver/index.js
+++ b/lib/versioning/semver/index.js
@@ -24,8 +24,6 @@ const getMajor = input => {
   return semver.major(version);
 };
 
-const isRange = input => isValid(input) && !isVersion(input);
-
 // If this is left as an alias, inputs like "17.04.0" throw errors
 const isValid = input => validRange(input);
 
@@ -39,7 +37,6 @@ module.exports = {
   getMinor,
   isGreaterThan,
   isLessThanRange,
-  isRange,
   isSingleVersion,
   isStable,
   isValid,
diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js
index 45caccb2b99fa4493852bab55d1b5ad21c90c5bb..ef58b90c343db9c62ce9234aa57a71921f82bbab 100644
--- a/lib/workers/repository/process/lookup/index.js
+++ b/lib/workers/repository/process/lookup/index.js
@@ -18,7 +18,7 @@ async function lookupUpdates(config) {
     getMajor,
     getMinor,
     isGreaterThan,
-    isRange,
+    isSingleVersion,
     isVersion,
     matches,
     getNewValue,
@@ -93,11 +93,11 @@ async function lookupUpdates(config) {
   }
   const rangeStrategy = getRangeStrategy(config);
   const fromVersion = getFromVersion(config, rangeStrategy, allVersions);
-  if (isRange(currentValue) && rangeStrategy === 'pin') {
+  if (rangeStrategy === 'pin' && !isSingleVersion(currentValue)) {
     updates.push({
       type: 'pin',
       isPin: true,
-      newValue: fromVersion,
+      newValue: getNewValue(config, fromVersion, fromVersion),
       newMajor: getMajor(fromVersion),
     });
   }
@@ -121,7 +121,7 @@ async function lookupUpdates(config) {
     update.newMajor = getMajor(toVersion);
     update.newMinor = getMinor(toVersion);
     update.type = getType(config, fromVersion, toVersion);
-    if (isRange(update.newValue)) {
+    if (!isVersion(update.newValue)) {
       update.isRange = true;
     }
 
@@ -183,10 +183,10 @@ function getBucket(config, update) {
 
 function getFromVersion(config, rangeStrategy, allVersions) {
   const { currentValue, lockedVersion, versionScheme } = config;
-  const { isRange, maxSatisfyingVersion, minSatisfyingVersion } = versioning(
+  const { isVersion, maxSatisfyingVersion, minSatisfyingVersion } = versioning(
     versionScheme
   );
-  if (!isRange(currentValue)) {
+  if (isVersion(currentValue)) {
     return currentValue;
   }
   logger.trace(`currentValue ${currentValue} is range`);
diff --git a/test/versioning/pep440.spec.js b/test/versioning/pep440.spec.js
index 8e945b59015b3f6867dbe0aa02e5ae9c58545877..df6ec7d434ca9780f47c6e38296933a9935bea85 100644
--- a/test/versioning/pep440.spec.js
+++ b/test/versioning/pep440.spec.js
@@ -23,17 +23,6 @@ describe('pep440.isValid(input)', () => {
     ).toBe(false);
   });
 });
-describe('pep440.isRange(input)', () => {
-  it('rejects simple pep440', () => {
-    expect(!!pep440.isRange('1.2.3')).toBe(false);
-  });
-  it('accepts tilde', () => {
-    expect(!!pep440.isRange('~=1.2.3')).toBe(true);
-  });
-  it('accepts glob', () => {
-    expect(!!pep440.isRange('==1.2.*')).toBe(true);
-  });
-});
 
 describe('pep440.isStable(version)', () => {
   it('returns correct value', () => {
diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js
index e2a8a0f1e0f64d4c7e8ea82c46d41429e2af2b78..7fb7ac378be8470ab66ef820d9ca120c7a0df0ce 100644
--- a/test/versioning/semver.spec.js
+++ b/test/versioning/semver.spec.js
@@ -26,17 +26,6 @@ describe('semver.isValid(input)', () => {
     ).toBe(false);
   });
 });
-describe('semver.isRange(input)', () => {
-  it('rejects simple semver', () => {
-    expect(!!semver.isRange('1.2.3')).toBe(false);
-  });
-  it('accepts tilde', () => {
-    expect(!!semver.isRange('~1.2.3')).toBe(true);
-  });
-  it('accepts caret', () => {
-    expect(!!semver.isRange('^1.2.3')).toBe(true);
-  });
-});
 describe('semver.isSingleVersion()', () => {
   it('returns true if naked version', () => {
     expect(!!semver.isSingleVersion('1.2.3')).toBe(true);
diff --git a/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap b/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap
index ac1a4a521a58c8eb60006f2a3b19fd094a99ad08..3a2aed0f405b12e05858b0cf6248221428b773b2 100644
--- a/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap
+++ b/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap
@@ -42,7 +42,7 @@ Array [
   Object {
     "isPin": true,
     "newMajor": 0,
-    "newValue": "0.9.4",
+    "newValue": "==0.9.4",
     "repositoryUrl": "https://github.com/kriskowal/q",
     "type": "pin",
   },