diff --git a/Makefile.pre.in b/Makefile.pre.in
index 3d0e279dba71de..f43956b6b7cf6c 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -316,7 +316,8 @@ PROFILE_TASK=	@PROFILE_TASK@
 # report files for gcov / lcov coverage report
 COVERAGE_INFO=	$(abs_builddir)/coverage.info
 COVERAGE_REPORT=$(abs_builddir)/lcov-report
-COVERAGE_REPORT_OPTIONS=--no-branch-coverage --title "CPython lcov report"
+COVERAGE_LCOV_OPTIONS=--rc lcov_branch_coverage=1
+COVERAGE_REPORT_OPTIONS=--rc lcov_branch_coverage=1 --branch-coverage --title "CPython $(VERSION) LCOV report [commit $(shell $(GITVERSION))]"
 
 
 # === Definitions added by makesetup ===
@@ -653,25 +654,24 @@ profile-opt: profile-run-stamp
 coverage:
 	@echo "Building with support for coverage checking:"
 	$(MAKE) clean
-	$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg --coverage" LIBS="$(LIBS) --coverage"
+	$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg --coverage" LDFLAGS="$(LDFLAGS) --coverage"
 
 coverage-lcov:
 	@echo "Creating Coverage HTML report with LCOV:"
 	@rm -f $(COVERAGE_INFO)
 	@rm -rf $(COVERAGE_REPORT)
-	@lcov --capture --directory $(abs_builddir) \
+	@lcov $(COVERAGE_LCOV_OPTIONS) --capture \
+	    --directory $(abs_builddir) \
 	    --base-directory $(realpath $(abs_builddir)) \
 	    --path $(realpath $(abs_srcdir)) \
 	    --output-file $(COVERAGE_INFO)
 	@ # remove 3rd party modules, system headers and internal files with
 	@ # debug, test or dummy functions.
-	@lcov --remove $(COVERAGE_INFO) \
+	@lcov $(COVERAGE_LCOV_OPTIONS) --remove $(COVERAGE_INFO) \
 	    '*/Modules/_blake2/impl/*' \
 	    '*/Modules/_ctypes/libffi*/*' \
 	    '*/Modules/_decimal/libmpdec/*' \
 	    '*/Modules/expat/*' \
-	    '*/Modules/zlib/*' \
-	    '*/Include/*' \
 	    '*/Modules/xx*.c' \
 	    '*/Python/pyfpe.c' \
 	    '*/Python/pystrcmp.c' \
@@ -679,7 +679,8 @@ coverage-lcov:
 	    '/usr/local/include/*' \
 	    '/usr/lib/gcc/*' \
 	    --output-file $(COVERAGE_INFO)
-	@genhtml $(COVERAGE_INFO) --output-directory $(COVERAGE_REPORT) \
+	@genhtml $(COVERAGE_INFO) \
+	    --output-directory $(COVERAGE_REPORT) \
 	    $(COVERAGE_REPORT_OPTIONS)
 	@echo
 	@echo "lcov report at $(COVERAGE_REPORT)/index.html"