Index: applications/editors/josm/plugins/seachart/jicons/examples.xml
===================================================================
--- applications/editors/josm/plugins/seachart/jicons/examples.xml	(revision 33935)
+++ applications/editors/josm/plugins/seachart/jicons/examples.xml	(revision 33936)
@@ -14,7 +14,9 @@
     <tag k="seamark:topmark:shape" v="cone, point up" />
   </icon>
-  <icon width="100" height="100" scale="1.0" file="notice" format="PNG" >
-    <tag k="seamark:type" v="small_craft_facility" />
-    <tag k="seamark:small_craft_facility:category" v="fuel_station" />
+  <icon width="100" height="100" scale="0.5" file="floodlight" format="PNG" >
+    <tag k="seamark:type" v="light_minor" />
+    <tag k="seamark:light:category" v="floodlight" />
+    <tag k="seamark:topmark:shape" v="arrow" />
+    <tag k="seamark:topmark:orientation" v="45" />
   </icon>
 </icons>
Index: applications/editors/josm/plugins/seachart/src/render/Rules.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Rules.java	(revision 33935)
+++ applications/editors/josm/plugins/seachart/src/render/Rules.java	(revision 33936)
@@ -32,4 +32,5 @@
 import s57.S57val.CatHAF;
 import s57.S57val.CatLAM;
+import s57.S57val.CatLIT;
 import s57.S57val.CatLMK;
 import s57.S57val.CatMOR;
@@ -1058,6 +1059,11 @@
         case PILPNT:
             if (Renderer.zoom >= 14) {
-                Renderer.symbol(Beacons.LightMinor);
-                ok = true;
+              if (hasAttribute(Obj.LIGHTS, Att.CATLIT) && (testAttribute(Obj.LIGHTS, Att.CATLIT, CatLIT.LIT_FLDL))) {
+              	Renderer.symbol(Beacons.Floodlight);
+              	Renderer.symbol(Harbours.SignalStation);
+              } else {
+              	Renderer.symbol(Beacons.LightMinor);
+              }
+              ok = true;
             }
             break;
@@ -1066,15 +1072,24 @@
         }
         if (ok) {
+        	AffineTransform tr = new AffineTransform();
             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.LightDelta);
+                	if (hasAttribute(Obj.TOPMAR, Att.ORIENT)) {
+                		tr.rotate(Math.toRadians((Double)getAttVal(Obj.TOPMAR, Att.ORIENT)));
+                	}
+                	tr.translate(0, -20);
+                  Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                  		getScheme(Obj.TOPMAR), new Delta(Handle.BC, tr));
                 }
             } 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.LightDelta);
+                	if (hasAttribute(Obj.DAYMAR, Att.ORIENT)) {
+                		tr.rotate(Math.toRadians((Double)getAttVal(Obj.DAYMAR, Att.ORIENT)));
+                	}
+                	tr.translate(0, -20);
+                  Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                  		getScheme(Obj.DAYMAR), new Delta(Handle.BC, tr));
                 }
             }
Index: applications/editors/josm/plugins/seachart/src/render/Signals.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Signals.java	(revision 33935)
+++ applications/editors/josm/plugins/seachart/src/render/Signals.java	(revision 33936)
@@ -397,6 +397,8 @@
             }
         }
-        Renderer.symbol(Beacons.LightFlare, new Scheme(LightColours.get(col)),
+        if (!(hasAttribute(Obj.LIGHTS, Att.CATLIT) && (testAttribute(Obj.LIGHTS, Att.CATLIT, CatLIT.LIT_FLDL)))) {
+        	Renderer.symbol(Beacons.LightFlare, new Scheme(LightColours.get(col)),
                 new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.toRadians(120))));
+        }
         if (Renderer.zoom >= 12) {
             String str = "";
Index: applications/editors/josm/plugins/seachart/src/s57/S57val.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57val.java	(revision 33935)
+++ applications/editors/josm/plugins/seachart/src/s57/S57val.java	(revision 33936)
@@ -986,5 +986,5 @@
     public enum TopSHP { TOP_UNKN, TOP_CONE, TOP_ICONE, TOP_SPHR, TOP_ISD, TOP_CAN, TOP_BORD, TOP_SALT, TOP_CROS, TOP_CUBE, TOP_WEST, TOP_EAST, TOP_RHOM,
         TOP_NORTH, TOP_SOUTH, TOP_BESM, TOP_IBESM, TOP_FLAG, TOP_SPRH, TOP_SQUR, TOP_HRECT, TOP_VRECT, TOP_TRAP, TOP_ITRAP, TOP_TRI, TOP_ITRI, TOP_CIRC,
-        TOP_CRSS, TOP_T, TOP_TRCL, TOP_CRCL, TOP_RHCL, TOP_CLTR, TOP_OTHR, TOP_CYSP, TOP_COSP }
+        TOP_CRSS, TOP_T, TOP_TRCL, TOP_CRCL, TOP_RHCL, TOP_CLTR, TOP_OTHR, TOP_CYSP, TOP_COSP, TOP_ARRW }
 
     private static final EnumMap<TopSHP, S57enum> Topshp = new EnumMap<>(TopSHP.class); static {
@@ -1001,5 +1001,5 @@
         Topshp.put(TopSHP.TOP_T, new S57enum(28, "t-shape")); Topshp.put(TopSHP.TOP_TRCL, new S57enum(29, "triangle, point up over circle")); Topshp.put(TopSHP.TOP_CRCL, new S57enum(30, "upright cross over circle"));
         Topshp.put(TopSHP.TOP_RHCL, new S57enum(31, "rhombus over circle")); Topshp.put(TopSHP.TOP_CLTR, new S57enum(32, "circle over triangle, point up")); Topshp.put(TopSHP.TOP_OTHR, new S57enum(33, "other"));
-        Topshp.put(TopSHP.TOP_CYSP, new S57enum(34, "cylinder over sphere")); Topshp.put(TopSHP.TOP_COSP, new S57enum(35, "cone, point up over sphere"));
+        Topshp.put(TopSHP.TOP_CYSP, new S57enum(34, "cylinder over sphere")); Topshp.put(TopSHP.TOP_ARRW, new S57enum(99, "arrow"));
     }
 
Index: applications/editors/josm/plugins/seachart/src/symbols/Beacons.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Beacons.java	(revision 33935)
+++ applications/editors/josm/plugins/seachart/src/symbols/Beacons.java	(revision 33936)
@@ -61,4 +61,16 @@
         Cairn.add(new Instr(Form.ELPS, new Ellipse2D.Double(-43, -40, 40, 40)));
         Cairn.add(new Instr(Form.ELPS, new Ellipse2D.Double(-18, -70, 36, 36)));
+    }
+
+    public static final Symbol Floodlight = new Symbol();
+    static {
+    	Floodlight.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -100, 100, 100)));
+    	Floodlight.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)));
+    	Floodlight.add(new Instr(Form.FILL, new Color(0xffa000)));
+      Path2D.Double p = new Path2D.Double(); p.moveTo(0, 0); p.lineTo(-34, -15); p.quadTo(-35, -31, -20, -31); p.lineTo(0, 0);
+      p.moveTo(-20, -31); p.quadTo(-13, -44, 0, -36); p.lineTo(0, 0);
+      p.moveTo(0, -36); p.quadTo(13, -44, 20, -31); p.lineTo(0, 0);
+      p.moveTo(20, -31); p.quadTo(35, -31, 34, -15); p.lineTo(0, 0);
+      Floodlight.add(new Instr(Form.PLIN, p));
     }
 
Index: applications/editors/josm/plugins/seachart/src/symbols/Harbours.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Harbours.java	(revision 33935)
+++ applications/editors/josm/plugins/seachart/src/symbols/Harbours.java	(revision 33936)
@@ -231,5 +231,5 @@
     static {
         SignalStation.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-        SignalStation.add(new Instr(Form.ELPS, new Ellipse2D.Double(-25, -25, 50, 50)));
+        SignalStation.add(new Instr(Form.ELPS, new Ellipse2D.Double(-20, -20, 40, 40)));
         SignalStation.add(new Instr(Form.RSHP, new Ellipse2D.Double(-4, -4, 8, 8)));
     }
Index: applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java	(revision 33935)
+++ applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java	(revision 33936)
@@ -32,10 +32,20 @@
     public static final Symbol RadarReflector = new Symbol();
     static {
-        RadarReflector.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -40, 100, 40)));
-        RadarReflector.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-        RadarReflector.add(new Instr(Form.FILL, Color.black));
-        Path2D.Double p = new Path2D.Double(); p.moveTo(-30, -3); p.quadTo(0, -40, 30, -3); p.moveTo(0, -20); p.lineTo(0, -37);
-        p.moveTo(-30, -3); p.lineTo(-43, -14); p.moveTo(30, -3); p.lineTo(44, -14); p.moveTo(-15, -14); p.lineTo(-25, -30); p.moveTo(15, -14); p.lineTo(25, -30);
-        RadarReflector.add(new Instr(Form.PLIN, p));
+      RadarReflector.add(new Instr(Form.BBOX, new Rectangle2D.Double(-50, -40, 100, 40)));
+      RadarReflector.add(new Instr(Form.STRK, new BasicStroke(6, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+      RadarReflector.add(new Instr(Form.FILL, Color.black));
+      Path2D.Double p = new Path2D.Double(); p.moveTo(-30, -3); p.quadTo(0, -40, 30, -3); p.moveTo(0, -20); p.lineTo(0, -37);
+      p.moveTo(-30, -3); p.lineTo(-43, -14); p.moveTo(30, -3); p.lineTo(44, -14); p.moveTo(-15, -14); p.lineTo(-25, -30); p.moveTo(15, -14); p.lineTo(25, -30);
+      RadarReflector.add(new Instr(Form.PLIN, p));
+    }
+
+    public static final Symbol TopArrow = new Symbol();
+    static {
+    	TopArrow.add(new Instr(Form.BBOX, new Rectangle2D.Double(-20, -80, 40, 80)));
+    	TopArrow.add(new Instr(Form.STRK, new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
+    	TopArrow.add(new Instr(Form.FILL, Color.black));
+      Path2D.Double p = new Path2D.Double(); p.moveTo(0, 0); p.lineTo(0, -25); p.lineTo(-10, -25); p.lineTo(-10, -43);
+      p.lineTo(0, -50); p.lineTo(10, -43); p.lineTo(10, -25); p.lineTo(0, -25);
+    	TopArrow.add(new Instr(Form.PLIN, p));
     }
 
@@ -527,5 +537,5 @@
         Shapes.put(TopSHP.TOP_CIRC, TopCircle); Shapes.put(TopSHP.TOP_CRSS, TopCrosses); Shapes.put(TopSHP.TOP_T, TopT); Shapes.put(TopSHP.TOP_TRCL, TopTriangleCircle);
         Shapes.put(TopSHP.TOP_CRCL, TopCrossCircle); Shapes.put(TopSHP.TOP_RHCL, TopRhombusCircle); Shapes.put(TopSHP.TOP_CLTR, TopCircleTriangle);
-        Shapes.put(TopSHP.TOP_CYSP, TopCanSphere); Shapes.put(TopSHP.TOP_OTHR, TopOther);
+        Shapes.put(TopSHP.TOP_CYSP, TopCanSphere); Shapes.put(TopSHP.TOP_OTHR, TopOther); Shapes.put(TopSHP.TOP_ARRW, TopArrow);
     }
 
@@ -545,5 +555,4 @@
     public static final Delta FloatDelta  = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -42.0));
     public static final Delta BeaconDelta = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -70.0));
-    public static final Delta LightDelta  = new Delta(Handle.BC, AffineTransform.getTranslateInstance(0.0, -20.0));
     // CHECKSTYLE.ON: SingleSpaceSeparator
 }
