diff -ruN ed-1.13-pre1.orig/main_loop.c ed-1.13-pre1/main_loop.c
--- ed-1.13-pre1.orig/main_loop.c	2015-06-05 12:08:36.000000000 -0300
+++ ed-1.13-pre1/main_loop.c	2015-11-29 20:52:51.960891406 -0300
@@ -202,7 +202,11 @@
   while( true )
     {
     int n;
-    const unsigned char ch = **ibufpp;
+    unsigned char ch = **ibufpp;
+
+    /* historical and obscure feature of ed */
+    ch = ( ch == '^' ? '-' : ch );
+
     if( isdigit( ch ) )
       {
       if( !first ) { invalid_address(); return -2; };
diff -ruN ed-1.13-pre1.orig/testsuite/addr3.d ed-1.13-pre1/testsuite/addr3.d
--- ed-1.13-pre1.orig/testsuite/addr3.d	1969-12-31 21:00:00.000000000 -0300
+++ ed-1.13-pre1/testsuite/addr3.d	2015-11-29 20:31:34.742829536 -0300
@@ -0,0 +1,10 @@
+line 1
+line 2
+line 3
+line 4
+line 5
+1ine 6
+line 7
+line 8
+line 9
+line 10
diff -ruN ed-1.13-pre1.orig/testsuite/addr3.r ed-1.13-pre1/testsuite/addr3.r
--- ed-1.13-pre1.orig/testsuite/addr3.r	1969-12-31 21:00:00.000000000 -0300
+++ ed-1.13-pre1/testsuite/addr3.r	2015-11-29 20:47:54.591877010 -0300
@@ -0,0 +1,5 @@
+line 3
+line 4
+line 8
+line 9
+line 10
diff -ruN ed-1.13-pre1.orig/testsuite/addr3.t ed-1.13-pre1/testsuite/addr3.t
--- ed-1.13-pre1.orig/testsuite/addr3.t	1969-12-31 21:00:00.000000000 -0300
+++ ed-1.13-pre1/testsuite/addr3.t	2015-11-29 20:46:45.607873628 -0300
@@ -0,0 +1,5 @@
+1 d
+1 +^ d
+1,3,d
+5;^ -,d
+/[^:upper:]/^,d
