Index: applications/editors/josm/plugins/smed2/src/symbols/Areas.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 29125)
+++ applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 29126)
@@ -10,12 +10,33 @@
 package symbols;
 
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.geom.*;
 import java.util.ArrayList;
 
-import symbols.Symbols.Instr;
+import symbols.Symbols.*;
 
 public class Areas {
 	public static final ArrayList<Instr> Cable = new ArrayList<Instr>();
+	static {
+		Cable.add(new Instr(Prim.STRK, new BasicStroke(8.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+		Cable.add(new Instr(Prim.FILL, new Color(0xc480ff)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(0,0); p.curveTo(-13,-13,-13,-17,0,-30); p.curveTo(13,-43,13,-47,0,-60);
+		Cable.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> LaneArrow = new ArrayList<Instr>();
+	static {
+		LaneArrow.add(new Instr(Prim.STRK, new BasicStroke(10.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER)));
+		LaneArrow.add(new Instr(Prim.FILL, new Color(0x80c480ff, true)));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(15,0); p.lineTo(15,-195); p.lineTo(40,-195);
+		p.lineTo(0,-240); p.lineTo(-40,-195); p.lineTo(-15,-195); p.lineTo(-15,0); p.closePath();
+		LaneArrow.add(new Instr(Prim.PLIN, p));
+	}
 	public static final ArrayList<Instr> LineAnchor = new ArrayList<Instr>();
+	static {
+		LineAnchor.add(new Instr(Prim.FILL, new Color(0xc480ff)));
+		LineAnchor.add(new Instr(Prim.SYMB, new Symbols.Symbol(Harbours.Anchor, 0.5, 0, 0, new Delta(Handle.TC, AffineTransform.getRotateInstance(Math.toRadians(-90.0))), null)));
+	}
 	public static final ArrayList<Instr> LinePlane = new ArrayList<Instr>();
 	public static final ArrayList<Instr> MarineFarm = new ArrayList<Instr>();
Index: applications/editors/josm/plugins/smed2/src/symbols/Harbours.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 29125)
+++ applications/editors/josm/plugins/smed2/src/symbols/Harbours.java	(revision 29126)
@@ -12,4 +12,5 @@
 import java.awt.BasicStroke;
 import java.awt.Color;
+import java.awt.Rectangle;
 import java.awt.geom.Arc2D;
 import java.awt.geom.Ellipse2D;
@@ -25,4 +26,5 @@
 	public static final ArrayList<Instr> Anchor = new ArrayList<Instr>();
 	static {
+		Anchor.add(new Instr(Prim.BBOX, new Rectangle(-60,-60,120,120)));
 		Anchor.add(new Instr(Prim.STRK, new BasicStroke(4.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		Anchor.add(new Instr(Prim.ELPS, new Ellipse2D.Double(-10,-59,20,20)));
Index: applications/editors/josm/plugins/smed2/src/symbols/Symbols.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 29125)
+++ applications/editors/josm/plugins/smed2/src/symbols/Symbols.java	(revision 29126)
@@ -119,8 +119,9 @@
 				double dy = 0.0;
 				if (dd != null) {
+					g2.transform(dd.t);
 					switch (dd.h) {
 					case CC:
 						dx = bbox.x + (bbox.width / 2.0);
-						dy = bbox.y - (bbox.height / 2.0);
+						dy = bbox.y + (bbox.height / 2.0);
 						break;
 					case TL:
@@ -138,25 +139,24 @@
 					case LC:
 						dx = bbox.x;
-						dy = bbox.y - (bbox.height / 2.0);
+						dy = bbox.y + (bbox.height / 2.0);
 						break;
 					case RC:
 						dx = bbox.x + bbox.width;
-						dy = bbox.y - (bbox.height / 2.0);
+						dy = bbox.y + (bbox.height / 2.0);
 						break;
 					case BL:
 						dx = bbox.x;
-						dy = bbox.y - bbox.height;
+						dy = bbox.y + bbox.height;
 						break;
 					case BR:
 						dx = bbox.x + bbox.width;
-						dy = bbox.y - bbox.height;
+						dy = bbox.y + bbox.height;
 						break;
 					case BC:
 						dx = bbox.x + (bbox.width / 2.0);
-						dy = bbox.y - bbox.height;
+						dy = bbox.y + bbox.height;
 						break;
 					}
-					g2.translate(dx, dy);
-					g2.transform(dd.t);
+					g2.translate(-dx, -dy);
 				}
 				break;
Index: applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java	(revision 29125)
+++ applications/editors/josm/plugins/smed2/src/symbols/Topmarks.java	(revision 29126)
@@ -28,5 +28,5 @@
 	public static final ArrayList<Instr> TopBoard = new ArrayList<Instr>();
 	static {
-		TopBoard.add(new Instr(Prim.BBOX, new Rectangle(-20,80,40,80)));
+		TopBoard.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-19.0,-2.0); p.lineTo(-19.0,-39.0); p.lineTo(19.0,-39.0); p.lineTo(19.0,-2.0); p.closePath();
@@ -40,5 +40,5 @@
 	public static final ArrayList<Instr> TopCan = new ArrayList<Instr>();
 	static {
-		TopCan.add(new Instr(Prim.BBOX, new Rectangle(-20,80,40,80)));
+		TopCan.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-12.0,-15.0); p.lineTo(-12.0,-48.0); p.lineTo(12.0,-48.0); p.lineTo(12.0,-15.0); p.closePath();
@@ -53,5 +53,5 @@
 	public static final ArrayList<Instr> TopCone = new ArrayList<Instr>();
 	static {
-		TopCone.add(new Instr(Prim.BBOX, new Rectangle(-20,80,40,80)));
+		TopCone.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-15.0); p.lineTo(0.0,-45.0); p.lineTo(15.0,-15.0); p.closePath();
@@ -66,5 +66,5 @@
 	public static final ArrayList<Instr> TopCross = new ArrayList<Instr>();
 	static {
-		TopCross.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopCross.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-5.0,-15.0); p.lineTo(-5.0,-32.5); p.lineTo(-22.5,-32.5);	p.lineTo(-22.5,-42.5); p.lineTo(-5.0,-42.5);
@@ -82,5 +82,5 @@
 	public static final ArrayList<Instr> TopEast = new ArrayList<Instr>();
 	static {
-		TopEast.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopEast.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-80.0); p.lineTo(-15.0,-47.0); p.lineTo(15.0,-47.0); p.closePath();
@@ -100,5 +100,5 @@
 	public static final ArrayList<Instr> TopIsol = new ArrayList<Instr>();
 	static {
-		TopIsol.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopIsol.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-55.0); p.curveTo(-13.0, -72.3, 13.0, -72.3, 13.0,-55.0); p.curveTo(13.0, -37.7, -13.0, -37.7, -13.0,-55.0); p.closePath();
@@ -116,5 +116,5 @@
 	public static final ArrayList<Instr> TopMooring = new ArrayList<Instr>();
 	static {
-		TopMooring.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopMooring.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		TopMooring.add(new Instr(Prim.STRK, new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
 		TopMooring.add(new Instr(Prim.FILL, Color.black));
@@ -124,5 +124,5 @@
 	public static final ArrayList<Instr> TopNorth = new ArrayList<Instr>();
 	static {
-		TopNorth.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopNorth.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-78.0); p.lineTo(-15.0,-45.0); p.lineTo(15.0,-45.0); p.closePath();
@@ -141,5 +141,5 @@
 	public static final ArrayList<Instr> TopSouth = new ArrayList<Instr>();
 	static {
-		TopSouth.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopSouth.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0);  p.lineTo(15.0,-78.0); p.closePath();
@@ -158,5 +158,5 @@
 	public static final ArrayList<Instr> TopSphere = new ArrayList<Instr>();
 	static {
-		TopSphere.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopSphere.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-14.0,-28.0); p.curveTo(-14.0,-46.7,14.0,-46.7,14.0,-28.0); p.curveTo(14.0,-9.3,-14.0,-9.3,-14.0,-28.0); p.closePath();
@@ -171,5 +171,5 @@
 	public static final ArrayList<Instr> TopSquare = new ArrayList<Instr>();
 	static {
-		TopSquare.add(new Instr(Prim.BBOX, new Rectangle(-20,80,40,80)));
+		TopSquare.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-13.0,-1.0); p.lineTo(-13.0,-27.0); p.lineTo(13.0,-27.0); p.lineTo(13.0,-1.0); p.closePath();
@@ -183,5 +183,5 @@
 	public static final ArrayList<Instr> TopTriangle = new ArrayList<Instr>();
 	static {
-		TopTriangle.add(new Instr(Prim.BBOX, new Rectangle(-20,80,40,80)));
+		TopTriangle.add(new Instr(Prim.BBOX, new Rectangle(-20,-80,40,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-1.0); p.lineTo(0.0,-29.0); p.lineTo(15.0,-1.0); p.closePath();
@@ -195,5 +195,5 @@
 	public static final ArrayList<Instr> TopWest = new ArrayList<Instr>();
 	static {
-		TopWest.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopWest.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(-15.0,-78.0); p.lineTo(0.0,-45.0);  p.lineTo(15.0,-78.0); p.closePath();
@@ -212,5 +212,5 @@
 	public static final ArrayList<Instr> TopX = new ArrayList<Instr>();
 	static {
-		TopX.add(new Instr(Prim.BBOX, new Rectangle(-30,80,60,80)));
+		TopX.add(new Instr(Prim.BBOX, new Rectangle(-30,-80,60,80)));
 		ArrayList<Instr> colours = new ArrayList<Instr>();
 		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,-27.7); p.lineTo(-12.4,-15.7); p.lineTo(-19.3,-22.6); p.lineTo(-7.3,-35.0); p.lineTo(-19.3,-47.3);
