diff --git a/grid.c b/grid.c
index 0098c81c..ec9f6b36 100644
--- a/grid.c
+++ b/grid.c
@@ -374,7 +374,7 @@ grid_collect_history(struct grid *gd)
 {
 	u_int	ny;
 
-	if (gd->hsize == 0 || gd->hsize < gd->hlimit)
+	if (gd->hlimit < 0 || gd->hsize == 0 || gd->hsize < gd->hlimit)
 		return;
 
 	ny = gd->hlimit / 10;
diff --git a/options-table.c b/options-table.c
index a461b3ea..e8ede12b 100644
--- a/options-table.c
+++ b/options-table.c
@@ -587,7 +587,7 @@ const struct options_table_entry options_table[] = {
 	{ .name = "history-limit",
 	  .type = OPTIONS_TABLE_NUMBER,
 	  .scope = OPTIONS_TABLE_SESSION,
-	  .minimum = 0,
+	  .minimum = -INT_MAX,
 	  .maximum = INT_MAX,
 	  .default_num = 2000,
 	  .unit = "lines",