Index: applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 29205)
+++ applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 29206)
@@ -100,5 +100,5 @@
 		ArrayList<Long> way;
 		if (map.mpolys.containsKey(feature.refs)) {
-			way = map.ways.get(map.mpolys.get(feature.refs));
+			way = map.ways.get(map.mpolys.get(feature.refs).get(0));
 		} else {
 			way = map.ways.get(feature.refs);
@@ -107,5 +107,5 @@
 		case NODE:
 			return map.nodes.get(feature.refs);
-		case WAY:
+		case LINE:
 			coord = map.nodes.get(way.get(1));
 			break;
@@ -152,5 +152,5 @@
 				}
 				if (item.type == Prim.SYMB) {
-					ssymb = (Symbol) item.params;
+					ssymb = ((SubSymbol)item.params).instr;
 					break;
 				}
@@ -293,8 +293,7 @@
 	public static void labelText (Feature feature, String str, Font font, Color colour, Delta delta) {
 		Symbol label = new Symbol();
-		label.add(new Instr(Prim.TEXT, new Caption(str, font, colour
-				, delta)));
+		label.add(new Instr(Prim.TEXT, new Caption(str, font, colour, (delta == null) ? new Delta(Handle.CC, null) : delta)));
 		Point2D point = helper.getPoint(findCentroid(feature));
-		Symbols.drawSymbol(g2, label, tScale, point.getX(), point.getY(), delta, null);
+		Symbols.drawSymbol(g2, label, tScale, point.getX(), point.getY(), null, null);
 	}
 	
Index: applications/editors/josm/plugins/smed2/src/seamap/Rules.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 29205)
+++ applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 29206)
@@ -195,5 +195,5 @@
 				Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, null));
 			if ((zoom >= 12) && (name != null))
-				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.PLAIN, 100), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 0)));
+				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.PLAIN, 100), Color.black, null);
 			break;
 		case RESARE:
@@ -291,5 +291,38 @@
 	}
 	private static void harbours(Feature feature) {
-	}
+		AttItem name = feature.atts.get(Att.OBJNAM);
+		switch (feature.type) {
+		case ACHARE:
+			if (zoom >= 12) {
+				Renderer.symbol(feature, Harbours.Anchorage, null, null);
+				Renderer.lineSymbols(feature, Areas.Restricted, 1.0, Areas.LineAnchor, 10);
+				if ((zoom >= 15) && ((name) != null)) {
+					Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), new Color(0x80c480ff), null);
+				}
+			}
+			break;
+		}
+	}
+	/*
+	 *   if ((zoom >= 12) && is_type("anchorage")) {
+    symbol("anchorage");
+    if ((zoom >= 15) && (has_item_attribute("name")))
+      text(item_attribute("name"), "font-family:Arial; font-weight:bold; font-size:80; text-anchor:middle", 0, -90);
+    if ((zoom >= 12) && (is_area)) line_symbols("restricted_line", 0.5, "line_anchor", 10);
+  }
+  if ((zoom >= 16) && is_type("anchor_berth")) symbol("anchor_berth");
+  if ((zoom >= 12) && is_type("harbour")) {
+    if (has_attribute("category")) {
+      attribute_switch("category")
+      attribute_case("marina|yacht") symbol("marina");
+      attribute_case("marina_no_facilities") symbol("marina_nf");
+      attribute_default symbol("harbour");
+      end_switch
+    } else symbol("harbour");
+    if ((zoom >= 15) && (has_item_attribute("name")))
+      text(item_attribute("name"), "font-family:Arial; font-weight:bold; font-size:80; text-anchor:middle", 0, -90);
+  }
+
+	 */
 	private static void locks(Feature feature) {
 	}
Index: applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java	(revision 29205)
+++ applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java	(revision 29206)
@@ -24,5 +24,5 @@
 
 	public enum Fflag {
-		UNKN, NODE, WAY, AREA
+		UNKN, NODE, LINE, AREA
 	}
 
@@ -147,5 +147,5 @@
 		feature = new Feature();
 		feature.refs = id;
-		feature.flag = Fflag.WAY;
+		feature.flag = Fflag.LINE;
 	}
 
@@ -172,7 +172,7 @@
 
 	public void tagsDone(long id) {
-		if ((feature.type != Obj.UNKOBJ) && !((feature.flag == Fflag.WAY) && (list.size() < 2))) {
+		if ((feature.type != Obj.UNKOBJ) && !((feature.flag == Fflag.LINE) && (list.size() < 2))) {
 			index.put(id, feature);
-			if ((feature.flag == Fflag.WAY) && (list.size() > 0) && (list.get(0).equals(list.get(list.size() - 1)))) {
+			if ((feature.flag == Fflag.LINE) && (list.size() > 0) && (list.get(0).equals(list.get(list.size() - 1)))) {
 				feature.flag = Fflag.AREA;
 			}
Index: applications/editors/josm/plugins/smed2/src/symbols/Areas.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 29205)
+++ applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 29206)
@@ -44,4 +44,5 @@
 	public static final Symbol LineAnchor = new Symbol();
 	static {
+		LineAnchor.add(new Instr(Prim.BBOX, new Rectangle(-30,-60,60,90)));
 		LineAnchor.add(new Instr(Prim.FILL, new Color(0xc480ff)));
 		LineAnchor.add(new Instr(Prim.SYMB, new Symbols.SubSymbol(Harbours.Anchor, 0.5, 0, 0, new Delta(Handle.CC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
Index: applications/editors/josm/plugins/smed2/src/symbols/Symbols.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 29205)
+++ applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 29206)
@@ -122,10 +122,10 @@
 	
 	public static class SubSymbol {
-		Symbol instr;
-		double scale;
-		double x;
-		double y;
-		Delta delta;
-		Scheme scheme;
+		public Symbol instr;
+		public double scale;
+		public double x;
+		public double y;
+		public Delta delta;
+		public Scheme scheme;
 
 		public SubSymbol(Symbol iinstr, double iscale, double ix, double iy, Delta idelta, Scheme ischeme) {
@@ -295,5 +295,5 @@
 					dy = 0;
 					if (c.dd != null) {
-						g2.transform(c.dd.t);
+						if (c.dd.t != null) g2.transform(c.dd.t);
 						switch (c.dd.h) {
 						case CC:
