Index: applications/editors/josm/plugins/seachart/src/render/Rules.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Rules.java	(revision 32092)
+++ applications/editors/josm/plugins/seachart/src/render/Rules.java	(revision 32093)
@@ -628,4 +628,5 @@
 	}
 	
+	@SuppressWarnings("unchecked")
 	private static void floats() {
 		if (Renderer.zoom >= 12) {
@@ -643,6 +644,15 @@
 				break;
 			}
-			if (feature.objs.get(Obj.TOPMAR) != null)
-				Renderer.symbol(Topmarks.Shapes.get(feature.objs.get(Obj.TOPMAR).get(0).get(Att.TOPSHP).val), getScheme(Obj.TOPMAR), Topmarks.FloatDelta);
+			if (feature.objs.containsKey(Obj.TOPMAR)) {
+				AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>)(topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), Topmarks.FloatDelta);
+				}
+			} else if (feature.objs.containsKey(Obj.DAYMAR)) {
+				AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
+				if (topmap.containsKey(Att.TOPSHP)) {
+					Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>)(topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), Topmarks.FloatDelta);
+				}
+			}
 			addName(15, new Font("Arial", Font.BOLD, 40), new Delta(Handle.BL, AffineTransform.getTranslateInstance(20, -50)));
 			Signals.addSignals();
Index: applications/editors/josm/plugins/seachart/src/render/Signals.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Signals.java	(revision 32092)
+++ applications/editors/josm/plugins/seachart/src/render/Signals.java	(revision 32093)
@@ -117,11 +117,17 @@
 			case BCNSAW:
 			case BCNSPP:
+				if ((Rules.feature.objs.containsKey(Obj.TOPMAR)) || (Rules.feature.objs.containsKey(Obj.DAYMAR))) {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -140)));
+				} else {
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -80)));
+				}
+				break;
 			case LITFLT:
 			case LITVES:
 			case BOYINB:
 				if ((Rules.feature.objs.containsKey(Obj.TOPMAR)) || (Rules.feature.objs.containsKey(Obj.DAYMAR))) {
-					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -140)));
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -110)));
 				} else {
-					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -80)));
+					Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -60)));
 				}
 				break;
@@ -140,11 +146,11 @@
 			case BOYSPP:
 				if ((Rules.feature.objs.containsKey(Obj.TOPMAR)) || (Rules.feature.objs.containsKey(Obj.DAYMAR))) {
-					if (Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_PILR) || Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_PILR)) {
-						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(45, -140)));
+					if (Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_PILR) || Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_SPAR)) {
+						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(50, -160)));
 					} else {
 						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(25, -80)));
 					}
 				} else {
-					if (Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_PILR) || Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_PILR)) {
+					if (Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_PILR) || Rules.testAttribute(Rules.feature.type, Att.BOYSHP, BoySHP.BOY_SPAR)) {
 						Renderer.symbol(Topmarks.RadarReflector, new Delta(Handle.BC, AffineTransform.getTranslateInstance(30, -100)));
 					} else {
@@ -164,21 +170,23 @@
 		if (Renderer.zoom >= 15) {
 			AttMap atts = Rules.feature.objs.get(Obj.FOGSIG).get(0);
-			String str = "";
-			if (atts.containsKey(Att.CATFOG)) {
-				str += fogSignals.get(((ArrayList<?>) (atts.get(Att.CATFOG).val)).get(0));
-			}
-			if (atts.containsKey(Att.SIGGRP)) {
-				str += "(" + atts.get(Att.SIGGRP).val + ")";
-			} else {
-				str += " ";
-			}
-			if (atts.containsKey(Att.SIGPER)) {
-				str += df.format(atts.get(Att.SIGPER).val) + "s";
-			}
-			if (atts.containsKey(Att.VALMXR)) {
-				str += df.format(atts.get(Att.VALMXR).val) + "M";
-			}
-			if (!str.isEmpty()) {
-				Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-60, -30)));
+			if (atts != null) {
+				String str = "";
+				if (atts.containsKey(Att.CATFOG)) {
+					str += fogSignals.get(((ArrayList<?>) (atts.get(Att.CATFOG).val)).get(0));
+				}
+				if (atts.containsKey(Att.SIGGRP)) {
+					str += "(" + atts.get(Att.SIGGRP).val + ")";
+				} else {
+					str += " ";
+				}
+				if (atts.containsKey(Att.SIGPER)) {
+					str += df.format(atts.get(Att.SIGPER).val) + "s";
+				}
+				if (atts.containsKey(Att.VALMXR)) {
+					str += df.format(atts.get(Att.VALMXR).val) + "M";
+				}
+				if (!str.isEmpty()) {
+					Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-60, -30)));
+				}
 			}
 		}
