Index: src/wp-includes/comment-functions.php
===================================================================
--- src/wp-includes/comment-functions.php	(revision 35433)
+++ src/wp-includes/comment-functions.php	(working copy)
@@ -2592,6 +2592,11 @@
 	if ( ! in_array( $post->post_type, $post_types ) )
 		return $open;
 
+	// Undated drafts should not show up as comments closed.
+	if ( $post->post_date_gmt === '0000-00-00 00:00:00' ) {
+		return $open;
+	}
+
 	if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) )
 		return false;
 
Index: tests/phpunit/tests/comment.php
===================================================================
--- tests/phpunit/tests/comment.php	(revision 35433)
+++ tests/phpunit/tests/comment.php	(working copy)
@@ -567,4 +567,26 @@
 
 		return $email_sent_when_comment_approved || $email_sent_when_comment_added;
 	}
+
+	public function test_close_comments_for_old_post() {
+		update_option( 'close_comments_for_old_posts', true );
+		// Close comments more than one day old.
+		update_option( 'close_comments_days_old', 1 );
+
+		$old_date = strtotime( '-25 hours' );
+		$old_post_id = self::factory()->post->create_and_get( array( 'post_date' => strftime( '%Y-%m-%d %H:%M:%S', $old_date ) ) );
+
+		$old_post_comment_status = _close_comments_for_old_post( true, $old_post_id );
+		$this->assertFalse( $old_post_comment_status );
+
+		$new_post_comment_status = _close_comments_for_old_post( true, self::$post_id );
+		$this->assertTrue( $new_post_comment_status );
+	}
+
+	public function test_close_comments_for_old_post_undated_draft() {
+		$draft_id = self::factory()->post->create_and_get( array( 'post_status' => 'draft', 'post_type' => 'post' ) );
+		$draft_comment_status = _close_comments_for_old_post( true, $draft_id );
+
+		$this->assertTrue( $draft_comment_status );
+	}
 }
