Index: applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22683)
@@ -349,5 +349,5 @@
 				}
 
-				if (name.compareTo("") == 0) {
+				if (name.equals("")) {
 					if (keys.containsKey("seamark:buoy_lateral:name"))
 						name = keys.get("seamark:buoy_lateral:name");
@@ -364,5 +364,5 @@
 				}
 
-				if (cat.compareTo("port") == 0) {
+				if (cat.equals("port")) {
 
 					buoy = new BuoyLat(this, SeaMark.PORT_HAND);
@@ -1337,5 +1337,5 @@
 						i1 = it.indexOf("+");
 						i2 = it.length();
-						if (c == "")
+						if (c.equals(""))
 							c = it;
 						else
@@ -1343,5 +1343,5 @@
 					}
 
-					if (c == "")
+					if (c.equals(""))
 						c = it;
 					buoy.setLightChar(c);
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22683)
@@ -90,5 +90,6 @@
 	public final static int SPEC_SPHERE = 3;
 	public final static int SPEC_BARREL = 4;
-	public final static int SPEC_BEACON = 5;
+	public final static int SPEC_FLOAT = 5;
+	public final static int SPEC_BEACON = 6;
 	public final static int LIGHT_HOUSE = 1;
 	public final static int LIGHT_MAJOR = 2;
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22683)
@@ -142,5 +142,5 @@
 
 	public void setLightPeriod(String lightPeriod) {
-		String regex = "^[\\d\\s]+$";
+		String regex = "^[\\d\\s.]+$";
 
 		if (lightPeriod.length() == 0)
@@ -299,13 +299,13 @@
 
 		if (dlg.cM01Fired.isSelected()) {
-			if (colour == "red") {
+			if (colour.equals("red")) {
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:colour", "red"));
 				setLightColour("R");
-			} else if (colour == "green") {
+			} else if (colour.equals("green")) {
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:colour", "green"));
 				setLightColour("G");
-			} else if (colour == "white") {
+			} else if (colour.equals("white")) {
 				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 						"seamark:light:colour", "white"));
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 22683)
@@ -167,5 +167,5 @@
 
 					dlg.cbM01Kennung.setSelectedItem(c);
-					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+					if (dlg.cbM01Kennung.getSelectedItem().equals("Not set"))
 						c = "";
 				}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22683)
@@ -84,5 +84,5 @@
 
 					dlg.cbM01Kennung.setSelectedItem(c);
-					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+					if (dlg.cbM01Kennung.getSelectedItem().equals("Not set"))
 						c = "";
 				}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22683)
@@ -343,5 +343,5 @@
 
 				dlg.cbM01Kennung.setSelectedItem(c);
-				if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+				if (dlg.cbM01Kennung.getSelectedItem().equals("Not set"))
 					c = "";
 			}
@@ -814,5 +814,5 @@
 		case PREF_PORT_HAND:
 			if (getRegion() == IALA_A) {
-				if (str.compareTo("red") == 0) {
+				if (str.equals("red")) {
 					setFired(true);
 					super.setLightColour("R");
@@ -821,5 +821,5 @@
 				}
 			} else {
-				if (str.compareTo("green") == 0) {
+				if (str.equals("green")) {
 					setFired(true);
 					super.setLightColour("G");
@@ -833,5 +833,5 @@
 		case PREF_STARBOARD_HAND:
 			if (getRegion() == IALA_A) {
-				if (str.compareTo("green") == 0) {
+				if (str.equals("green")) {
 					setFired(true);
 					super.setLightColour("G");
@@ -840,5 +840,5 @@
 				}
 			} else {
-				if (str.compareTo("red") == 0) {
+				if (str.equals("red")) {
 					setFired(true);
 					super.setLightColour("R");
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22683)
@@ -89,5 +89,5 @@
 
 					dlg.cbM01Kennung.setSelectedItem(c);
-					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+					if (dlg.cbM01Kennung.getSelectedItem().equals("Not set"))
 						c = "";
 				}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22678)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22683)
@@ -25,8 +25,19 @@
 		dlg.cbM01StyleOfMark.addItem("Sphere Buoy");
 		dlg.cbM01StyleOfMark.addItem("Barrel");
+		dlg.cbM01StyleOfMark.addItem("Float");
 		dlg.cbM01StyleOfMark.addItem("Beacon");
 
 		dlg.cbM01Kennung.removeAllItems();
 		dlg.cbM01Kennung.addItem("Not set");
+		dlg.cbM01Kennung.addItem("Fl");
+		dlg.cbM01Kennung.addItem("Fl(2)");
+		dlg.cbM01Kennung.addItem("Fl(3)");
+		dlg.cbM01Kennung.addItem("Fl(4)");
+		dlg.cbM01Kennung.addItem("Fl(5)");
+		dlg.cbM01Kennung.addItem("Oc(2)");
+		dlg.cbM01Kennung.addItem("Oc(3)");
+		dlg.cbM01Kennung.addItem("Q");
+		dlg.cbM01Kennung.addItem("IQ");
+		dlg.cbM01Kennung.setSelectedIndex(0);
 
 		dlg.cM01Fired.setSelected(false);
@@ -66,4 +77,7 @@
 			image += "_Barrel";
 			break;
+		case SPEC_FLOAT:
+			image += "_Float";
+			break;
 		case SPEC_BEACON:
 			image += "_Beacon";
@@ -85,5 +99,5 @@
 
 					dlg.cbM01Kennung.setSelectedItem(c);
-					if (dlg.cbM01Kennung.getSelectedItem() == "Not set")
+					if (dlg.cbM01Kennung.getSelectedItem().equals("Not set"))
 						c = "";
 				}
@@ -132,4 +146,9 @@
 					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
+		case SPEC_FLOAT:
+			super.saveSign("light_Float");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour", "yellow"));
+			break;
 		case SPEC_BEACON:
 			super.saveSign("beacon_special_purpose");
@@ -161,5 +180,5 @@
 			str = keys.get("seamark:topmark:shape");
 
-			if (str.compareTo("x-shape") == 0) {
+			if (str.equals("x-shape")) {
 				setTopMark(true);
 
@@ -193,5 +212,5 @@
 			}
 
-			if (str.compareTo("white") == 0) {
+			if (str.equals("white")) {
 				setFired(true);
 				setLightColour("W");
@@ -225,11 +244,11 @@
 			str = keys.get("seamark:buoy_special_purpose:shape");
 
-			if (str.compareTo("pillar") == 0)
+			if (str.equals("pillar"))
 				setStyleIndex(SPEC_PILLAR);
-			else if (str.compareTo("spar") == 0)
+			else if (str.equals("spar"))
 				setStyleIndex(SPEC_SPAR);
-			else if (str.compareTo("sphere") == 0)
+			else if (str.equals("sphere"))
 				setStyleIndex(SPEC_SPHERE);
-			else if (str.compareTo("barrel") == 0)
+			else if (str.equals("barrel"))
 				setStyleIndex(SPEC_BARREL);
 			else
@@ -239,5 +258,10 @@
 		if (keys.containsKey("seamark:beacon_special_purpose"))
 			setStyleIndex(SPEC_BEACON);
-			return ret;
+		else if (keys.containsKey("seamark:light_float")
+				&& keys.containsKey("seamark:light_float:colour")
+				&& keys.get("seamark:light_float:colour").equals("yellow"))
+			setStyleIndex(SPEC_FLOAT);
+
+		return ret;
 	}
 
