diff --git a/solventmapcreator/polynomialanalysis/polynomialplotting.py b/solventmapcreator/polynomialanalysis/polynomialplotting.py
index 9c4faab2be147be8f9b418e307c2e70dd85493e8..083144f40ae5649f274843e95f4ff4fb40727b3a 100644
--- a/solventmapcreator/polynomialanalysis/polynomialplotting.py
+++ b/solventmapcreator/polynomialanalysis/polynomialplotting.py
@@ -31,6 +31,26 @@ def parse_energies_create_plot_input_data(free_energy_filename, polynomial_order
     plot_data['figure_label'] = free_energy_filename.replace('.xml', '')
     return plot_data
 
+def parse_poly_data_to_file_split_fit(free_energy_filename, order_list, poly_filename,
+                                      pos_subset_list, neg_subset_list):
+    """This reads in the energy information, and then performs the fits on the
+    two separate subsets, and outputs to file.
+    """
+    datapoints = parse_free_energy_from_file_with_data_arrays(free_energy_filename)
+    return write_poly_data_to_file_split_fit(datapoints, order_list, poly_filename,
+                                             pos_subset_list, neg_subset_list)
+
+def write_poly_data_to_file_split_fit(datapoints, order_list, filename,
+                                      pos_subset_list, neg_subset_list):
+    """This calculates the polynomial information for fitting to the 2 sub sets
+    and writes to file.
+    """
+    return polynomialdatawriter.write_poly_data_to_file_split_fit(datapoints,
+                                                                  order_list,
+                                                                  filename,
+                                                                  pos_subset_list,
+                                                                  neg_subset_list)
+
 def parse_energies_and_output_poly_data_subset(free_energy_filename, order_list, poly_filename, subset_list):
     """This reads in the energy information, and then selects teh subset of
     points to carry out the analysis on, outputs the polynomial information to file.
diff --git a/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py b/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py
index 9c37b76164381a0830650cacd700366ae2af5369..1a2a210759549c635b2b4d02d172134f562af984 100644
--- a/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py
+++ b/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py
@@ -32,6 +32,8 @@ class PolynomialPlottingTestCase(unittest.TestCase):
             os.remove("actual_water_poly_fit.csv")
         if os.path.isfile("actual_water_poly_fit_subset.csv"):
             os.remove("actual_water_poly_fit_subset.csv")
+        if os.path.isfile("actual_water_poly_fit_split.csv"):
+            os.remove("actual_water_poly_fit_split.csv")
     def test_parse_energies_create_plot_input_data(self):
         """Test to see expected plot data is returned.
         """
@@ -71,6 +73,39 @@ class PolynomialPlottingTestCase(unittest.TestCase):
             else:
                 LOGGER.debug("assert equal string")
                 self.assertEqual(actual_dict[key], expected_dict[key])
+    def test_parse_poly_data_to_file_split_fit(self):
+        """Test to see if expected fit is done on the positive and negative subsets
+        after the file was read in.
+        """
+        expected_file_name = "resources/water_poly_fit_split.csv"
+        actual_file_name = "actual_water_poly_fit_split.csv"
+        neg_set_list = ["-5.400solute", "-4.300solute", "-9.100solute", "-11.100solute", "-15.400solute"]
+        pos_set_list = ["0.500solute", "1.200solute", "7.200solute"]
+        poly_file_out = polynomialplotting.parse_poly_data_to_file_split_fit("resources/water.xml", [2, 4],
+                                                                             actual_file_name, pos_set_list,
+                                                                             neg_set_list)
+        self.assertEqual(0, poly_file_out)
+        with open(expected_file_name, 'r') as exp_file:
+            exp_file_lines = exp_file.readlines()
+            with open(actual_file_name, 'r') as act_file:
+                act_file_lines = act_file.readlines()
+                self.assertListEqual(act_file_lines, exp_file_lines)
+    def test_write_poly_data_to_file_split_fit(self):
+        """Test to see if expected_fit is done on the positive and negative subsets.
+        """
+        expected_file_name = "resources/water_poly_fit_split.csv"
+        actual_file_name = "actual_water_poly_fit_split.csv"
+        neg_set_list = ["-5.400solute", "-4.300solute", "-9.100solute", "-11.100solute", "-15.400solute"]
+        pos_set_list = ["0.500solute", "1.200solute", "7.200solute"]
+        poly_file_out = polynomialplotting.write_poly_data_to_file_split_fit(self.expected_datapoints, [2,4],
+                                                                             actual_file_name, pos_set_list,
+                                                                             neg_set_list)
+        self.assertEqual(0, poly_file_out)
+        with open(expected_file_name, 'r') as exp_file:
+            exp_file_lines = exp_file.readlines()
+            with open(actual_file_name, 'r') as act_file:
+                act_file_lines = act_file.readlines()
+                self.assertListEqual(act_file_lines, exp_file_lines)
     def test_parse_energies_and_output_poly_data_subset(self):
         """Test to see if expected_fit is done on a smaller subset of points.
         """
diff --git a/solventmapcreator/test/resources/water_poly_fit_split.csv b/solventmapcreator/test/resources/water_poly_fit_split.csv
new file mode 100644
index 0000000000000000000000000000000000000000..39d3f9a05af6c14892d24bb6be23e2684a7431b1
--- /dev/null
+++ b/solventmapcreator/test/resources/water_poly_fit_split.csv
@@ -0,0 +1,5 @@
+Order	Fit Range	RMSE	Covariance	Coefficients
+2	positive	0.0000000	1.2077460	-0.8992891	-0.3969325
+2	negative	0.0188857	0.0017833	6.3245323	2.8927088	-0.0017566
+4	positive	0.0000000	1.3515748	-1.3179762	-0.1267861	-0.0151557	-0.0020380
+4	negative	0.0000000	5.0388427	2.2906276	-0.0985583	-0.0064807	-0.0001546