diff --git a/internal/lsp/source/deep_completion.go b/internal/lsp/source/deep_completion.go
index 2b57782..2afff8b 100644
--- a/internal/lsp/source/deep_completion.go
+++ b/internal/lsp/source/deep_completion.go
@@ -73,22 +73,19 @@
 	// Invariant: s.highScores is sorted with highest score first. Unclaimed
 	// positions are trailing zeros.
 
-	// First check for an unclaimed spot and claim if available.
+	// If we beat an existing score then take its spot.
 	for i, deepScore := range s.highScores {
-		if deepScore == 0 {
-			s.highScores[i] = score
-			return true
+		if score <= deepScore {
+			continue
 		}
-	}
 
-	// Otherwise, if we beat an existing score then take its spot and scoot
-	// all lower scores down one position.
-	for i, deepScore := range s.highScores {
-		if score > deepScore {
+		if deepScore != 0 && i != len(s.highScores)-1 {
+			// If this wasn't an empty slot then we need to scooch everyone
+			// down one spot.
 			copy(s.highScores[i+1:], s.highScores[i:])
-			s.highScores[i] = score
-			return true
 		}
+		s.highScores[i] = score
+		return true
 	}
 
 	return false
diff --git a/internal/lsp/source/deep_completion_test.go b/internal/lsp/source/deep_completion_test.go
new file mode 100644
index 0000000..47d5179
--- /dev/null
+++ b/internal/lsp/source/deep_completion_test.go
@@ -0,0 +1,33 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package source
+
+import (
+	"testing"
+)
+
+func TestDeepCompletionIsHighScore(t *testing.T) {
+	// Test that deepCompletionState.isHighScore properly tracks the top
+	// N=MaxDeepCompletions scores.
+
+	var s deepCompletionState
+
+	if !s.isHighScore(1) {
+		// No other scores yet, anything is a winner.
+		t.Error("1 should be high score")
+	}
+
+	// Fill up with higher scores.
+	for i := 0; i < MaxDeepCompletions; i++ {
+		if !s.isHighScore(10) {
+			t.Error("10 should be high score")
+		}
+	}
+
+	// High scores should be filled with 10s so 2 is not a high score.
+	if s.isHighScore(2) {
+		t.Error("2 shouldn't be high score")
+	}
+}
