diff --git a/patterns/owl_vital_apats.db b/patterns/owl_vital_apats.db
index 029a1c8..13583ca 100644
--- a/patterns/owl_vital_apats.db
+++ b/patterns/owl_vital_apats.db
@@ -194,6 +194,23 @@ A*
 ;&& (owl_eye_size(*) <= 8 || !oplay_attack(*,*))
 
 
+Pattern VA9b
+# gf New pattern. (3.9.1)
+# See strategy5:290, upper right corner. Needed when the stone to be
+# ataried is not amalgamated with the goal dragon, otherwise VA9 applies.
+
+OX
+X*           atari inside eyespace
+
+:-,s,value(45)
+
+OX
+A*
+
+;!owl_goal_dragon(A) && lib(A)==2 && olib(*)>1 && owl_big_eyespace(*)
+;&& (owl_eye_size(*) <= 8 || !oplay_attack(*,*))
+
+
 Pattern VA10
 
 X*           atari inside eyespace with ko
diff --git a/patterns/patterns.db b/patterns/patterns.db
index ac3258d..2528474 100644
--- a/patterns/patterns.db
+++ b/patterns/patterns.db
@@ -8186,13 +8186,22 @@ OO*.
 
 
 Pattern CB229
+# gf Added constraint and relaxed requirement on living O stones. (3.9.1)
+# FIXME: Consider merging with CB291
 
 xXO             extend after hane
 XO.
 .*.
 ...
 
-:8,OXed,reverse_followup(5)
+:8,Xed,reverse_followup(5)
+
+xXb
+Xac
+.*.
+...
+
+;(alive(a) || alive(b)) && oplay_attack(*,c,c)
 
 
 Pattern CB230
@@ -8732,20 +8741,22 @@ Pattern CB290
 
 Pattern CB291
 # gf Shape value removed. (3.1.9)
+# gf Relaxed requirement on living O stones. (3.9.1)
+# FIXME: Consider merging with CB229
 
 .OX??          extend
 ..OX?
 ..*.?
 ?..??
 
-:8,OXed
+:8,Xed
 
-.OX??
-.aOX?
+.cX??
+.abX?
 ..*.?
 ?..??
 
-; oplay_attack(*,a,a)
+;(alive(b) || alive(c)) && oplay_attack(*,a,a)
 
 
 Pattern CB292

