diff --git a/test/unit/test_ngram/test_lm_mmap.c b/test/unit/test_ngram/test_lm_mmap.c
index 968ad56..cbff5dd 100644
--- a/test/unit/test_ngram/test_lm_mmap.c
+++ b/test/unit/test_ngram/test_lm_mmap.c
@@ -16,6 +16,8 @@ static const arg_t defn[] = {
 	{ NULL, 0, NULL, NULL }
 };
 
+#define TEST_ALMOST_EQUAL(val1, val2) (abs((val1) - (val2)) <= 1)
+
 int
 main(int argc, char *argv[])
 {
@@ -36,12 +38,12 @@ main(int argc, char *argv[])
 	TEST_EQUAL(ngram_wid(model, "absolute"), 13);
 	TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
 	/* Test unigrams. */
-	TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
-	TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+	TEST_ALMOST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
+	TEST_ALMOST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
 				  NGRAM_INVALID_WID, &n_used), -75346);
 	TEST_EQUAL(n_used, 1);
-	TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
-	TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+	TEST_ALMOST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
+	TEST_ALMOST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
 				  NGRAM_INVALID_WID, &n_used), -64208);
 	TEST_EQUAL(n_used, 1);
 	/* Test bigrams. */
@@ -59,12 +61,12 @@ main(int argc, char *argv[])
 	TEST_EQUAL(ngram_wid(model, "absolute"), 13);
 	TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
 	/* Test unigrams. */
-	TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
-	TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+	TEST_ALMOST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346);
+	TEST_ALMOST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
 				  NGRAM_INVALID_WID, &n_used), -75346);
 	TEST_EQUAL(n_used, 1);
-	TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
-	TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+	TEST_ALMOST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208);
+	TEST_ALMOST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
 				  NGRAM_INVALID_WID, &n_used), -64208);
 	TEST_EQUAL(n_used, 1);
 	/* Test bigrams. */
@@ -83,15 +85,15 @@ main(int argc, char *argv[])
 	TEST_EQUAL(ngram_wid(model, "absolute"), 13);
 	TEST_EQUAL(strcmp(ngram_word(model, 13), "absolute"), 0);
 	/* Test unigrams. */
-	TEST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346
+	TEST_ALMOST_EQUAL(ngram_score(model, "<UNK>", NULL), -75346
 		   * 2 + logmath_log(lmath, 0.5));
-	TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
+	TEST_ALMOST_EQUAL(ngram_bg_score(model, ngram_wid(model, "<UNK>"),
 				  NGRAM_INVALID_WID, &n_used), -75346
 		   * 2 + logmath_log(lmath, 0.5));
 	TEST_EQUAL(n_used, 1);
-	TEST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208
+	TEST_ALMOST_EQUAL(ngram_score(model, "sphinxtrain", NULL), -64208
 		   * 2 + logmath_log(lmath, 0.5));
-	TEST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
+	TEST_ALMOST_EQUAL(ngram_bg_score(model, ngram_wid(model, "sphinxtrain"),
 				  NGRAM_INVALID_WID, &n_used), -64208
 		   * 2 + logmath_log(lmath, 0.5));
 	TEST_EQUAL(n_used, 1);
