Index: /applications/editors/josm/plugins/smed2/src/seamap/Rules.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30119)
+++ /applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30120)
@@ -536,16 +536,25 @@
 		case HRBFAC:
 			if (zoom >= 12) {
-				switch ((CatHAF) getAttVal(feature, feature.type, 0, Att.CATHAF)) {
-				case HAF_MRNA:
-					Renderer.symbol(feature, Harbours.Marina);
-					break;
-				case HAF_MANF:
-					Renderer.symbol(feature, Harbours.MarinaNF);
-					break;
-				default:
+				ArrayList<CatHAF> cathaf = (ArrayList<CatHAF>) getAttVal(feature, Obj.HRBFAC, 0, Att.CATHAF);
+				if (cathaf.size() == 1) {
+					switch (cathaf.get(0)) {
+					case HAF_MRNA:
+						Renderer.symbol(feature, Harbours.Marina);
+						break;
+					case HAF_MANF:
+						Renderer.symbol(feature, Harbours.MarinaNF);
+						break;
+					case HAF_FISH:
+						Renderer.symbol(feature, Harbours.Fishing);
+						break;
+					default:
+						Renderer.symbol(feature, Harbours.Harbour);
+						break;
+					}
+				} else {
 					Renderer.symbol(feature, Harbours.Harbour);
-					break;
-				}
-			}
+				}
+			}
+			break;
 		default:
 			break;
Index: /applications/editors/josm/plugins/smed2/src/symbols/Harbours.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 30119)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 30120)
@@ -14,4 +14,5 @@
 import java.awt.geom.*;
 
+import seamap.Renderer;
 import symbols.Symbols.*;
 
@@ -28,7 +29,15 @@
 		Anchor.add(new Instr(Prim.PGON, p));
 	}
+	public static final Symbol Yacht = new Symbol();
+	static {
+		Yacht.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(-65.0,50.0); p.curveTo(-36.0,97.0,36.0,97.0,65.0,50.0); p.lineTo(3.0,50.0); p.lineTo(3.0,40.0); p.lineTo(55.0,30.0);
+		p.curveTo(32.0,4.0,25.0,-15.0,26.0,-52.0); p.lineTo(1.5,-40.0); p.lineTo(1.0,-64.0); p.lineTo(-2.0,-64.0); p.lineTo(-4.0,50.0); p.closePath();
+		p.moveTo(-50.0,45.0); p.curveTo(-55.0,3.0,-37.0,-28.5,-7.0,-46.0); p.curveTo(-28.0,-15.0,-26.0,11.0,-20.5,30.0); p.closePath();
+		Yacht.add(new Instr(Prim.PGON, p));
+	}
 	public static final Symbol Anchorage = new Symbol();
 	static {
-		Anchorage.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
+		Anchorage.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, new Scheme(Renderer.Msymb), null)));
 	}
 	public static final Symbol Bollard = new Symbol();
@@ -70,5 +79,5 @@
 	static {
 		DistanceU.add(new Instr(Prim.STRK, new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		DistanceU.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		DistanceU.add(new Instr(Prim.FILL, Renderer.Msymb));
 		DistanceU.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-11,-11,22,22)));
 	}
@@ -93,10 +102,22 @@
 		Explosives.add(new Instr(Prim.PLIN, p));
 	}
+	public static final Symbol Fishing = new Symbol();
+	static {
+		Fishing.add(new Instr(Prim.STRK, new BasicStroke(15, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+		Fishing.add(new Instr(Prim.FILL, Renderer.Msymb));
+		Fishing.add(new Instr(Prim.EARC, new Arc2D.Double(-75,-75,150,150,15,140,Arc2D.OPEN)));
+		Fishing.add(new Instr(Prim.EARC, new Arc2D.Double(-75,-75,150,150,-15,-140,Arc2D.OPEN)));
+		Path2D.Double p = new Path2D.Double(); p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+		p.moveTo(-40,5); p.curveTo(20,40,50,25,80,0); p.curveTo(50,-25,20,-40,-40,-5);
+		p.lineTo(-75,-25); p.quadTo(-80, 0, -75, 25); p.closePath();
+		p.moveTo(42, 0); p.curveTo(42, 10, 56, 10, 56, 0); p.curveTo(56, -10, 42, -10, 42, 0); p.closePath();
+		Fishing.add(new Instr(Prim.PGON, p));
+	}
 	public static final Symbol Harbour = new Symbol();
 	static {
 		Harbour.add(new Instr(Prim.STRK, new BasicStroke(15, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Harbour.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		Harbour.add(new Instr(Prim.FILL, Renderer.Msymb));
 		Harbour.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-75,-75,150,150)));
-		Harbour.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, null, null)));
+		Harbour.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 1.0, 0, 0, new Scheme(Renderer.Msymb), null)));
 	}
 	public static final Symbol HarbourMaster = new Symbol();
@@ -118,5 +139,5 @@
 	public static final Symbol LandingSteps = new Symbol();
 	static {
-		LandingSteps.add(new Instr(Prim.FILL, new Color(0xa30075)));
+		LandingSteps.add(new Instr(Prim.FILL, Renderer.Msymb));
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-20,-10); p.lineTo(10,20); p.lineTo(20,20); p.lineTo(20,10);
 		p.lineTo(10,10); p.lineTo(10,0); p.lineTo(0,0); p.lineTo(0,-10); p.lineTo(-10,-10); p.lineTo(-10,-20); p.lineTo(-20,-20); p.closePath();
@@ -128,6 +149,6 @@
 	static {
 		Marina.add(new Instr(Prim.STRK, new BasicStroke(15, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Marina.add(new Instr(Prim.FILL, new Color(0xa30075)));
-		Marina.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
+		Marina.add(new Instr(Prim.FILL, Renderer.Msymb));
+		Marina.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, new Scheme(Renderer.Msymb), null)));
 		Marina.add(new Instr(Prim.EARC, new Arc2D.Double(-80.0,-80.0,160.0,160.0,215.0,-250.0,Arc2D.OPEN)));
 	}
@@ -135,6 +156,5 @@
 	static {
 		MarinaNF.add(new Instr(Prim.STRK, new BasicStroke(15, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		MarinaNF.add(new Instr(Prim.FILL, new Color(0xa30075)));
-		MarinaNF.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, null, null)));
+		MarinaNF.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Yacht, 1.0, 0, 0, new Scheme(Renderer.Msymb), null)));
 	}
 	public static final Symbol Pilot = new Symbol();
@@ -181,11 +201,3 @@
 		TideGauge.add(new Instr(Prim.LINE, new Line2D.Double(-15,-65,15,-65)));
 	}
-	public static final Symbol Yacht = new Symbol();
-	static {
-		Yacht.add(new Instr(Prim.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-		Path2D.Double p = new Path2D.Double(); p.moveTo(-65.0,50.0); p.curveTo(-36.0,97.0,36.0,97.0,65.0,50.0); p.lineTo(3.0,50.0); p.lineTo(3.0,40.0); p.lineTo(55.0,30.0);
-		p.curveTo(32.0,4.0,25.0,-15.0,26.0,-52.0); p.lineTo(1.5,-40.0); p.lineTo(1.0,-64.0); p.lineTo(-2.0,-64.0); p.lineTo(-4.0,50.0); p.closePath();
-		p.moveTo(-50.0,45.0); p.curveTo(-55.0,3.0,-37.0,-28.5,-7.0,-46.0); p.curveTo(-28.0,-15.0,-26.0,11.0,-20.5,30.0); p.closePath();
-		Yacht.add(new Instr(Prim.PGON, p));
-	}
 }
