Index: applications/editors/josm/plugins/smed2/src/s57/S57val.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/s57/S57val.java	(revision 29206)
+++ applications/editors/josm/plugins/smed2/src/s57/S57val.java	(revision 29207)
@@ -659,5 +659,5 @@
 		Status.put(StsSTS.STS_PERM, new S57enum(1, "permanent")); Status.put(StsSTS.STS_OCAS, new S57enum(2, "occasional")); Status.put(StsSTS.STS_RCMD, new S57enum(3, "recommended")); 
 		Status.put(StsSTS.STS_NIUS, new S57enum(4, "not_in_use")); Status.put(StsSTS.STS_IMTT, new S57enum(5, "intermittent")); Status.put(StsSTS.STS_RESV, new S57enum(6, "reserved"));
-		Status.put(StsSTS.STS_TEMP, new S57enum(7, "tempory")); Status.put(StsSTS.STS_PRIV, new S57enum(8, "private")); Status.put(StsSTS.STS_MAND, new S57enum(9, "mandatory"));
+		Status.put(StsSTS.STS_TEMP, new S57enum(7, "temporary")); Status.put(StsSTS.STS_PRIV, new S57enum(8, "private")); Status.put(StsSTS.STS_MAND, new S57enum(9, "mandatory"));
 		Status.put(StsSTS.STS_EXTD, new S57enum(11, "extinguished")); Status.put(StsSTS.STS_ILLD, new S57enum(12, "illuminated")); Status.put(StsSTS.STS_HIST, new S57enum(13, "historic"));
 		Status.put(StsSTS.STS_PBLC, new S57enum(14, "public")); Status.put(StsSTS.STS_SYNC, new S57enum(15, "synchronised")); Status.put(StsSTS.STS_WCHD, new S57enum(16, "watched"));
Index: applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 29206)
+++ applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 29207)
@@ -211,10 +211,9 @@
 									double s = prev.distance(next);
 									double p = curr.distance(prev);
-									if (p > 0) {
+									if ((s > 0) && (p > 0)) {
 										double n = curr.distance(next);
-										double beta = Math.acos((s * s + p * p - n * n) / 2 / s / p);
-										double gamma = Math.asin(p / len * Math.sin(beta));
-										double alpha = Math.PI - beta - gamma;
-										rem = len * Math.sin(alpha) / Math.sin(beta);
+										double theta = Math.acos((s * s + p * p - n * n) / 2 / s / p);
+										double phi = Math.asin(p / len * Math.sin(theta));
+										rem = len * Math.sin(Math.PI - theta - phi) / Math.sin(theta);
 									}
 									succ = new Point2D.Double(prev.getX() + (rem * Math.cos(angle)), prev.getY() + (rem * Math.sin(angle)));
@@ -225,5 +224,5 @@
 								if (!gap) {
 									Symbols.drawSymbol(g2, symbol, sScale, curr.getX(), curr.getY(),
-											new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.atan2(succ.getY() - curr.getY(), succ.getX() - curr.getX())+Math.toRadians(90))), null);
+											new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.atan2((succ.getY() - curr.getY()), (succ.getX() - curr.getX()) + Math.toRadians(90)))), null);
 								}
 								if (space > 0) gap = !gap;
