Applied patch from Anthony Towns that he posted to Debian bug tracking.
diff --git a/sed.c b/sed.c
index a18f6e5..897c290 100644
--- a/sed.c
+++ b/sed.c
@@ -622,9 +622,10 @@
 			if (sed_cmds[i].beg_match && sed_cmds[i].end_match) {
 				if (still_in_range || regexec(sed_cmds[i].beg_match, line, 0, NULL, 0) == 0) {
 					line_altered += do_sed_command(&sed_cmds[i], line);
-					still_in_range = 1; 
-					if (regexec(sed_cmds[i].end_match, line, 0, NULL, 0) == 0)
+					if (still_in_range && regexec(sed_cmds[i].end_match, line, 0, NULL, 0) == 0)
 						still_in_range = 0;
+					else
+						still_in_range = 1;
 				}
 			}