Version 1.5 1.5
Version 1.5

--- a/AntennaRange.cfg
+++ b/AntennaRange.cfg
@@ -46,6 +46,16 @@
 		maxPowerFactor = 8
 		maxDataFactor = 4
 	}
+
+	MODULE
+	{
+		name = ModuleScienceContainer
+
+		dataIsCollectable = true
+		dataIsStorable = false
+
+		storageRange = 2
+	}
 }
 
 @PART[mediumDishAntenna]:FOR[AntennaRange]:NEEDS[!RemoteTech2]
@@ -56,6 +66,16 @@
 		nominalRange = 30000000
 		maxPowerFactor = 8
 		maxDataFactor = 4
+	}
+
+	MODULE
+	{
+		name = ModuleScienceContainer
+
+		dataIsCollectable = true
+		dataIsStorable = false
+
+		storageRange = 2
 	}
 }
 
@@ -68,5 +88,15 @@
 		maxPowerFactor = 8
 		maxDataFactor = 4
 	}
+
+	MODULE
+	{
+		name = ModuleScienceContainer
+
+		dataIsCollectable = true
+		dataIsStorable = false
+
+		storageRange = 2
+	}
 }
 

--- a/ModuleLimitedDataTransmitter.cs
+++ b/ModuleLimitedDataTransmitter.cs
@@ -394,26 +394,55 @@
 			}
 			else
 			{
+				Tools.PostDebugMessage(this, "{0} unable to transmit during TransmitData.", this.part.partInfo.title);
+
+				var logger = Tools.DebugLogger.New(this);
+
 				foreach (ModuleScienceContainer	scienceContainer in this.vessel.getModulesOfType<ModuleScienceContainer>())
 				{
-					if (scienceContainer.GetScienceCount() >= scienceContainer.capacity)
+					logger.AppendFormat("Checking ModuleScienceContainer in {0}\n",
+						scienceContainer.part.partInfo.title);
+
+					if (
+						scienceContainer.capacity != 0 &&
+						scienceContainer.GetScienceCount() >= scienceContainer.capacity
+					)
 					{
+						logger.Append("\tInsufficient capacity, skipping.\n");
 						continue;
 					}
 
+					List<ScienceData> dataStored = new List<ScienceData>();
+
 					foreach (ScienceData data in dataQueue)
 					{
-						if (scienceContainer.HasData(data))
+						if (!scienceContainer.allowRepeatedSubjects && scienceContainer.HasData(data))
 						{
-							break;
+							logger.Append("\tAlready contains subject and repeated subjects not allowed, skipping.\n");
+							continue;
 						}
 
+						logger.AppendFormat("\tAcceptable, adding data on subject {0}... ", data.subjectID);
 						if (scienceContainer.AddData(data))
 						{
-							dataQueue.Remove(data);
+							logger.Append("done, removing from queue.\n");
+
+							dataStored.Add(data);
 						}
+						#if DEBUG
+						else
+						{
+							logger.Append("failed.\n");
+						}
+						#endif
 					}
-				}
+
+					dataQueue.RemoveAll(i => dataStored.Contains(i));
+
+					logger.AppendFormat("\t{0} data left in queue.", dataQueue.Count);
+				}
+
+				logger.Print();
 
 				if (dataQueue.Count > 0)
 				{
@@ -430,6 +459,8 @@
 					}
 
 					ScreenMessages.PostScreenMessage(msg.ToString(), 4f, ScreenMessageStyle.UPPER_LEFT);
+
+					Tools.PostDebugMessage(msg.ToString());
 				}
 
 				this.PostCannotTransmitError ();

--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -39,7 +39,7 @@
 // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
 // The form "{Major}.{Minor}.*" will automatically update the build and revision,
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("1.4.3.*")]
+[assembly: AssemblyVersion("1.5.*")]
 // The following attributes are used to specify the signing key for the assembly,
 // if desired. See the Mono documentation for more information about signing.
 //[assembly: AssemblyDelaySign(false)]