Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 26449)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 26450)
@@ -237,7 +237,5 @@
 	public void setSectored(boolean sectored) {
 		Sectored = sectored;
-		if (sectored) {
-			LightColour[0] = "";
-		} else {
+		if (!sectored) {
 			setSectorIndex(0);
 			setLightChar("");
@@ -272,9 +270,5 @@
 
 	public void setLightChar(String lightChar) {
-		if (SectorIndex == 0) {
-			LightChar = new String[10];
-			LightChar[0] = lightChar;
-		} else if (LightChar[0].isEmpty())
-			LightChar[SectorIndex] = lightChar;
+		LightChar[SectorIndex] = lightChar;
 	}
 
@@ -300,6 +294,4 @@
 
 	public void setLightGroup(String lightGroup) {
-		if (SectorIndex == 0)
-			LightGroup = new String[10];
 		LightGroup[SectorIndex] = lightGroup;
 	}
@@ -322,6 +314,4 @@
 
 	public void setHeight(String height) {
-		if (SectorIndex == 0)
-			Height = new String[10];
 		Height[SectorIndex] = height;
 	}
@@ -336,6 +326,4 @@
 
 	public void setRange(String range) {
-		if (SectorIndex == 0)
-			Range = new String[10];
 		Range[SectorIndex] = range;
 	}
@@ -350,6 +338,4 @@
 
 	public void setSeq(String seq) {
-		if (SectorIndex == 0)
-			Sequence = new String[10];
 		Sequence[SectorIndex] = seq;
 	}
@@ -364,6 +350,4 @@
 
 	public void setBearing1(String bearing) {
-		if (SectorIndex == 0)
-			Bearing1 = new String[10];
 		Bearing1[SectorIndex] = bearing;
 	}
@@ -378,6 +362,4 @@
 
 	public void setBearing2(String bearing) {
-		if (SectorIndex == 0)
-			Bearing2 = new String[10];
 		Bearing2[SectorIndex] = bearing;
 	}
@@ -392,6 +374,4 @@
 
 	public void setRadius(String radius) {
-		if (SectorIndex == 0)
-			Radius = new String[10];
 		Radius[SectorIndex] = radius;
 	}
@@ -421,6 +401,4 @@
 			}
 		}
-		if (SectorIndex == 0)
-			LightPeriod = new String[10];
 		LightPeriod[SectorIndex] = lightPeriod;
 	}
@@ -502,4 +480,6 @@
 					else if (values[0].equals("white"))
 						LightColour[index] = "W";
+					else if (values[0].equals("yellow"))
+						LightColour[index] = "Y";
 					if (values.length > 1)
 						Bearing1[index] = values[1];
@@ -507,5 +487,5 @@
 						Bearing2[index] = values[2];
 					if (values.length > 3)
-						Radius[index] = values[3];
+						Radius[index] = String.valueOf((((Integer.parseInt(values[3])*100)+50)/278)/100.0);
 				} else {
 					index = 0;
@@ -528,4 +508,6 @@
 					else if (value.equals("white"))
 						LightColour[index] = "W";
+					else if (value.equals("yellow"))
+						LightColour[index] = "Y";
 				} else if (key.equals("character")) {
 					LightChar[index] = value;
@@ -544,4 +526,6 @@
 				} else if (key.equals("sector_end")) {
 					Bearing2[index] = value;
+				} else if (key.equals("radius")) {
+					Radius[index] = value;
 				}
 			}
@@ -925,5 +909,5 @@
 		String colour;
 		if (dlg.cM01Fired.isSelected()) {
-			if (!(colour = LightColour[0]).isEmpty() && !Sectored)
+			if (!(colour = LightColour[0]).isEmpty()) {
 				if (colour.equals("R")) {
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
@@ -935,5 +919,9 @@
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 							"seamark:light:colour", "white"));
+				} else if (colour.equals("Y")) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:light:colour", "yellow"));
 				}
+			}
 
 			if (!LitRef.isEmpty())
@@ -977,31 +965,28 @@
 						"seamark:light:sequence", Sequence[0]));
 
+			if (!Radius[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+						"seamark:light:radius", Radius[0]));
+
 			for (int i = 1; i < 10; i++) {
-				if ((colour = LightColour[i]) != null)
-					if (colour.equals("R")) {
+
+				if (LightColour[i] != null) {
+					if (LightColour[i].equals("R")) {
 						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 								"seamark:light:" + i + ":colour", "red"));
-						if ((Bearing1[i] != null) && (Bearing2[i] != null)
-								&& (Radius[i] != null))
-							Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-									"seamark:light:" + i, "red:" + Bearing1[i] + ":"
-											+ Bearing2[i] + ":" + Radius[i]));
-					} else if (colour.equals("G")) {
+						}
+					else if (LightColour[i].equals("G")) {
 						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 								"seamark:light:" + i + ":colour", "green"));
-						if ((Bearing1[i] != null) && (Bearing2[i] != null)
-								&& (Radius[i] != null))
-							Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-									"seamark:light:" + i, "green:" + Bearing1[i] + ":"
-											+ Bearing2[i] + ":" + Radius[i]));
-					} else if (colour.equals("W")) {
+						}
+					else if (LightColour[i].equals("W")) {
 						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 								"seamark:light:" + i + ":colour", "white"));
-						if ((Bearing1[i] != null) && (Bearing2[i] != null)
-								&& (Radius[i] != null))
-							Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-									"seamark:light:" + i, "white:" + Bearing1[i] + ":"
-											+ Bearing2[i] + ":" + Radius[i]));
-					}
+						}
+					else if (LightColour[i].equals("Y")) {
+						Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+								"seamark:light:" + i + ":colour", "yellow"));
+						}
+				}
 
 				if (LightPeriod[i] != null)
@@ -1036,4 +1021,8 @@
 					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
 							"seamark:light:" + i + ":sector_end", Bearing2[i]));
+				
+				if (Radius[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+							"seamark:light:" + i + ":radius", Radius[i]));
 			}
 		}
