Index: /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23175)
+++ /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23176)
@@ -450,5 +450,5 @@
 					return;
 				} else if (str.equals("yellow")) { //$NON-NLS-1$
-					buoy = new BuoySaw(this, node);
+					buoy = new BuoySpec(this, node);
 					return;
 				}
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 23175)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 23176)
@@ -100,10 +100,12 @@
 	public final static int ISOL_FLOAT = 5;
 	public final static int SPEC_PILLAR = 1;
-	public final static int SPEC_SPAR = 2;
-	public final static int SPEC_SPHERE = 3;
-	public final static int SPEC_BARREL = 4;
-	public final static int SPEC_FLOAT = 5;
-	public final static int SPEC_BEACON = 6;
-	public final static int SPEC_TOWER = 7;
+	public final static int SPEC_CAN = 2;
+	public final static int SPEC_CONE = 3;
+	public final static int SPEC_SPAR = 4;
+	public final static int SPEC_BEACON = 5;
+	public final static int SPEC_TOWER = 6;
+	public final static int SPEC_FLOAT = 7;
+	public final static int SPEC_SPHERE = 8;
+	public final static int SPEC_BARREL = 9;
 	
 	/**
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23175)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23176)
@@ -413,4 +413,5 @@
 		}
 		setSectorIndex(0);
+		dlg.cbM01Sector.setSelectedIndex(0);
 		dlg.cM01Fired.setSelected(isFired());
 		dlg.rbM01Fired1.setSelected(!isSectored());
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23175)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23176)
@@ -32,10 +32,12 @@
 		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
 		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
 		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
 		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
 		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.09")); //$NON-NLS-1$
-		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
-		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
-		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
 		dlg.cbM01StyleOfMark.setVisible(true);
 		dlg.lM01StyleOfMark.setVisible(true);
@@ -71,4 +73,8 @@
 			if (str.equals("pillar")) //$NON-NLS-1$
 				setStyleIndex(SPEC_PILLAR);
+			else if (str.equals("can")) //$NON-NLS-1$
+				setStyleIndex(SPEC_CAN);
+			else if (str.equals("conical")) //$NON-NLS-1$
+				setStyleIndex(SPEC_CONE);
 			else if (str.equals("spar")) //$NON-NLS-1$
 				setStyleIndex(SPEC_SPAR);
@@ -79,4 +85,16 @@
 		}
 
+		if (keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:beacon_special_purpose:shape"); //$NON-NLS-1$
+		if (str.equals("tower")) //$NON-NLS-1$
+			setStyleIndex(SPEC_TOWER);
+		else 
+			setStyleIndex(SPEC_BEACON);
+		}
+
+		if (keys.containsKey("seamark:light_float:colour")) {
+			setStyleIndex(SPEC_FLOAT);
+		}
+		
 		if ((keys.containsKey("seamark:type") && keys.get("seamark:type").equals( //$NON-NLS-1$ //$NON-NLS-2$
 				"beacon_special_purpose")) //$NON-NLS-1$
