Index: engine/owl.c
===================================================================
--- engine/owl.c	(revision 2411)
+++ engine/owl.c	(working copy)
@@ -1442,8 +1442,8 @@
     owl_update_goal(move, same_dragon, lunch, owlb, 1, pattern_data);
     owl_update_boundary_marks(move, owla);
   }
-  mark_goal_in_sgf(owla->goal);
-  mark_goal_in_sgf(owlb->goal);
+  mark_goal_and_boundary_in_sgf(owla->goal, owla->boundary);
+  mark_goal_and_boundary_in_sgf(owlb->goal, owlb->boundary);
     
   /* Do a recursive call to read the semeai after the move we just
    * tried. If dragon b was captured by the move, call
@@ -2358,7 +2358,7 @@
 	if (!owl->goal[origin])
 	  origin = select_new_goal_origin(origin, owl);
       }
-      mark_goal_in_sgf(owl->goal);
+      mark_goal_and_boundary_in_sgf(owl->goal, owl->boundary);
 
       if (origin == NO_MOVE)
 	dcode = 0;
@@ -2931,7 +2931,7 @@
        */
       owl_update_goal(mpos, moves[k].same_dragon, moves[k].lunch, owl, 0,
 		      moves[k].pattern_data);
-      mark_goal_in_sgf(owl->goal);
+      mark_goal_and_boundary_in_sgf(owl->goal, owl->boundary);
 
       if (!ko_move) {
 	int acode = do_owl_attack(str, NULL, &wid, owl, new_escape);
Index: engine/printutils.c
===================================================================
--- engine/printutils.c	(revision 2411)
+++ engine/printutils.c	(working copy)
@@ -515,7 +515,8 @@
  * This function cannot be in sgf/ as it has to understand the 1-D board.
  */
 void
-mark_goal_in_sgf(signed char goal[BOARDMAX])
+mark_goal_and_boundary_in_sgf(signed char goal[BOARDMAX],
+			      signed char boundary[BOARDMAX])
 {
   int pos;
   SGFNode *node;
@@ -524,9 +525,14 @@
     return;
   node = sgftreeNodeCheck(sgf_dumptree);
 
-  for (pos = BOARDMIN; pos < BOARDMAX; pos++)
+  for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
+    if (ON_BOARD(pos) && boundary[pos] == 1)
+      sgfCircle(node, I(pos), J(pos));
+    if (ON_BOARD(pos) && boundary[pos] == 2)
+      sgfTriangle(node, I(pos), J(pos));
     if (ON_BOARD(pos) && goal[pos])
       sgfSquare(node, I(pos), J(pos));
+  }
 }
 
 
Index: engine/board.h
===================================================================
--- engine/board.h	(revision 2411)
+++ engine/board.h	(working copy)
@@ -431,7 +431,8 @@
 void draw_letter_coordinates(FILE *outfile);
 void simple_showboard(FILE *outfile);
 
-void mark_goal_in_sgf(signed char goal[BOARDMAX]);
+void mark_goal_and_boundary_in_sgf(signed char goal[BOARDMAX],
+				   signed char boundary[BOARDMAX]);
 
 /* ================================================================ */
 /*                         assertions                               */
