Displaying differences for changeset
 
display as  

src/java/cfa/FlowStatistics.java

@@ -8,7 +8,9 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.GregorianCalendar;
 
 /**
 * Last Updated: 23-June-2014
@@ -77,8 +79,8 @@
         stationName = stationName.replace(",", "");
         
         //Initialize the summary result table
-        int summarySize = 49;
-        if(showMonthlyTF) summarySize = 169;
+        int summarySize = 50;
+        if(showMonthlyTF) summarySize = 170;
         
         String[][] statsSummaryTable = new String[summarySize][1];
         statsSummaryTable[0][0] = "Flow Statistics for " + stationID + "; " + stationName + "; created on " + today;
@@ -116,147 +118,148 @@
         statsSummaryTable[32][0] = "Average Duration of Low Pulses [days]";
         statsSummaryTable[33][0] = "Average Positive Difference Between Consecutive Days [cfs]";
         statsSummaryTable[34][0] = "Average Negative Difference Between Consecutive Days [cfs]";
-        statsSummaryTable[35][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Maximum) [cfs]";
-        statsSummaryTable[36][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Minimum) [cfs]";
-        statsSummaryTable[37][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Upper Quartile) [cfs]";
-        statsSummaryTable[38][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Lower Quartile) [cfs]";
-        statsSummaryTable[39][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Median) [cfs]";
-        statsSummaryTable[40][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Average) [cfs]";
-        statsSummaryTable[41][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Standard Deviation) [cfs]";
-        statsSummaryTable[42][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Variance)";
-        statsSummaryTable[43][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Skewness)";
-        statsSummaryTable[44][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Coefficient of Variation)";
+        statsSummaryTable[35][0] = "Temporal Centriod of Discharge [Day of Calendary Year]";
+        statsSummaryTable[36][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Maximum) [cfs]";
+        statsSummaryTable[37][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Minimum) [cfs]";
+        statsSummaryTable[38][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Upper Quartile) [cfs]";
+        statsSummaryTable[39][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Lower Quartile) [cfs]";
+        statsSummaryTable[40][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Median) [cfs]";
+        statsSummaryTable[41][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Average) [cfs]";
+        statsSummaryTable[42][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Standard Deviation) [cfs]";
+        statsSummaryTable[43][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Variance)";
+        statsSummaryTable[44][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Skewness)";
+        statsSummaryTable[45][0] = "Season " + seasonBegin + " to " + seasonEnd + " (Coefficient of Variation)";
         
         if(showMonthlyTF){
-            statsSummaryTable[45][0] = "January (Maximum) [cfs]";
-            statsSummaryTable[46][0] = "January (Minimum) [cfs]";
-            statsSummaryTable[47][0] = "January (Upper Quartile) [cfs]";
-            statsSummaryTable[48][0] = "January (Lower Quartile) [cfs]";
-            statsSummaryTable[49][0] = "January (Median) [cfs]";
-            statsSummaryTable[50][0] = "January (Average) [cfs]";
-            statsSummaryTable[51][0] = "January (Standard Deviation) [cfs]";
-            statsSummaryTable[52][0] = "January (Variance)";
-            statsSummaryTable[53][0] = "January (Skewness)";
-            statsSummaryTable[54][0] = "January (Coefficient of Variation)";
-            statsSummaryTable[55][0] = "February (Maximum) [cfs]";
-            statsSummaryTable[56][0] = "February (Minimum) [cfs]";
-            statsSummaryTable[57][0] = "February (Upper Quartile) [cfs]";
-            statsSummaryTable[58][0] = "February (Lower Quartile) [cfs]";
-            statsSummaryTable[59][0] = "February (Median) [cfs]";
-            statsSummaryTable[60][0] = "February (Average) [cfs]";
-            statsSummaryTable[61][0] = "February (Standard Deviation) [cfs]";
-            statsSummaryTable[62][0] = "February (Variance)";
-            statsSummaryTable[63][0] = "February (Skewness)";
-            statsSummaryTable[64][0] = "February (Coefficient of Variation)";
-            statsSummaryTable[65][0] = "March (Maximum) [cfs]";
-            statsSummaryTable[66][0] = "March (Minimum) [cfs]";
-            statsSummaryTable[67][0] = "March (Upper Quartile) [cfs]";
-            statsSummaryTable[68][0] = "March (Lower Quartile) [cfs]";
-            statsSummaryTable[69][0] = "March (Median) [cfs]";
-            statsSummaryTable[70][0] = "March (Average) [cfs]";
-            statsSummaryTable[71][0] = "March (Standard Deviation) [cfs]";
-            statsSummaryTable[72][0] = "March (Variance)";
-            statsSummaryTable[73][0] = "March (Skewness)";
-            statsSummaryTable[74][0] = "March (Coefficient of Variation)";
-            statsSummaryTable[75][0] = "April (Maximum) [cfs]";
-            statsSummaryTable[76][0] = "April (Minimum) [cfs]";
-            statsSummaryTable[77][0] = "April (Upper Quartile) [cfs]";
-            statsSummaryTable[78][0] = "April (Lower Quartile) [cfs]";
-            statsSummaryTable[79][0] = "April (Median) [cfs]";
-            statsSummaryTable[80][0] = "April (Average) [cfs]";
-            statsSummaryTable[81][0] = "April (Standard Deviation) [cfs]";
-            statsSummaryTable[82][0] = "April (Variance)";
-            statsSummaryTable[83][0] = "April (Skewness)";
-            statsSummaryTable[84][0] = "April (Coefficient of Variation)";
-            statsSummaryTable[85][0] = "May (Maximum) [cfs]";
-            statsSummaryTable[86][0] = "May (Minimum) [cfs]";
-            statsSummaryTable[87][0] = "May (Upper Quartile) [cfs]";
-            statsSummaryTable[88][0] = "May (Lower Quartile) [cfs]";
-            statsSummaryTable[89][0] = "May (Median) [cfs]";
-            statsSummaryTable[90][0] = "May (Average) [cfs]";
-            statsSummaryTable[91][0] = "May (Standard Deviation) [cfs]";
-            statsSummaryTable[92][0] = "May (Variance)";
-            statsSummaryTable[93][0] = "May (Skewness)";
-            statsSummaryTable[94][0] = "May (Coefficient of Variation)";
-            statsSummaryTable[95][0] = "June (Maximum) [cfs]";
-            statsSummaryTable[96][0] = "June (Minimum) [cfs]";
-            statsSummaryTable[97][0] = "June (Upper Quartile) [cfs]";
-            statsSummaryTable[98][0] = "June (Lower Quartile) [cfs]";
-            statsSummaryTable[99][0] = "June (Median) [cfs]";
-            statsSummaryTable[100][0] = "June (Average) [cfs]";
-            statsSummaryTable[101][0] = "June (Standard Deviation) [cfs]";
-            statsSummaryTable[102][0] = "June (Variance)";
-            statsSummaryTable[103][0] = "June (Skewness)";
-            statsSummaryTable[104][0] = "June (Coefficient of Variation)";
-            statsSummaryTable[105][0] = "July (Maximum) [cfs]";
-            statsSummaryTable[106][0] = "July (Minimum) [cfs]";
-            statsSummaryTable[107][0] = "July (Upper Quartile) [cfs]";
-            statsSummaryTable[108][0] = "July (Lower Quartile) [cfs]";
-            statsSummaryTable[109][0] = "July (Median) [cfs]";
-            statsSummaryTable[110][0] = "July (Average) [cfs]";
-            statsSummaryTable[111][0] = "July (Standard Deviation) [cfs]";
-            statsSummaryTable[112][0] = "July (Variance)";
-            statsSummaryTable[113][0] = "July (Skewness)";
-            statsSummaryTable[114][0] = "July (Coefficient of Variation)";
-            statsSummaryTable[115][0] = "August (Maximum) [cfs]";
-            statsSummaryTable[116][0] = "August (Minimum) [cfs]";
-            statsSummaryTable[117][0] = "August (Upper Quartile) [cfs]";
-            statsSummaryTable[118][0] = "August (Lower Quartile) [cfs]";
-            statsSummaryTable[119][0] = "August (Median) [cfs]";
-            statsSummaryTable[120][0] = "August (Average) [cfs]";
-            statsSummaryTable[121][0] = "August (Standard Deviation) [cfs]";
-            statsSummaryTable[122][0] = "August (Variance)";
-            statsSummaryTable[123][0] = "August (Skewness)";
-            statsSummaryTable[124][0] = "August (Coefficient of Variation)";
-            statsSummaryTable[125][0] = "September (Maximum) [cfs]";
-            statsSummaryTable[126][0] = "September (Minimum) [cfs]";
-            statsSummaryTable[127][0] = "September (Upper Quartile) [cfs]";
-            statsSummaryTable[128][0] = "September (Lower Quartile) [cfs]";
-            statsSummaryTable[129][0] = "September (Median) [cfs]";
-            statsSummaryTable[130][0] = "September (Average) [cfs]";
-            statsSummaryTable[131][0] = "September (Standard Deviation) [cfs]";
-            statsSummaryTable[132][0] = "September (Variance)";
-            statsSummaryTable[133][0] = "September (Skewness)";
-            statsSummaryTable[134][0] = "September (Coefficient of Variation)";
-            statsSummaryTable[135][0] = "October (Maximum) [cfs]";
-            statsSummaryTable[136][0] = "October (Minimum) [cfs]";
-            statsSummaryTable[137][0] = "October (Upper Quartile) [cfs]";
-            statsSummaryTable[138][0] = "October (Lower Quartile) [cfs]";
-            statsSummaryTable[139][0] = "October (Median) [cfs]";
-            statsSummaryTable[140][0] = "October (Average) [cfs]";
-            statsSummaryTable[141][0] = "October (Standard Deviation) [cfs]";
-            statsSummaryTable[142][0] = "October (Variance)";
-            statsSummaryTable[143][0] = "October (Skewness)";
-            statsSummaryTable[144][0] = "October (Coefficient of Variation)";
-            statsSummaryTable[145][0] = "November (Maximum) [cfs]";
-            statsSummaryTable[146][0] = "November (Minimum) [cfs]";
-            statsSummaryTable[147][0] = "November (Upper Quartile) [cfs]";
-            statsSummaryTable[148][0] = "November (Lower Quartile) [cfs]";
-            statsSummaryTable[149][0] = "November (Median) [cfs]";
-            statsSummaryTable[150][0] = "November (Average) [cfs]";
-            statsSummaryTable[151][0] = "November (Standard Deviation) [cfs]";
-            statsSummaryTable[152][0] = "November (Variance)";
-            statsSummaryTable[153][0] = "November (Skewness)";
-            statsSummaryTable[154][0] = "November (Coefficient of Variation)";
-            statsSummaryTable[155][0] = "December (Maximum) [cfs]";
-            statsSummaryTable[156][0] = "December (Minimum) [cfs]";
-            statsSummaryTable[157][0] = "December (Upper Quartile) [cfs]";
-            statsSummaryTable[158][0] = "December (Lower Quartile) [cfs]";
-            statsSummaryTable[159][0] = "December (Median) [cfs]";
-            statsSummaryTable[160][0] = "December (Average) [cfs]";
-            statsSummaryTable[161][0] = "December (Standard Deviation) [cfs]";
-            statsSummaryTable[162][0] = "December (Variance)";
-            statsSummaryTable[163][0] = "December (Skewness)";
-            statsSummaryTable[164][0] = "December (Coefficient of Variation)";
-            statsSummaryTable[165][0] = "Flow Statistics based on Indicators of Hydrologic Alteration from:";
-            statsSummaryTable[166][0] = "B.D. Richter; J.V. Baumgartner; J. Powell; D.P. Braun. 1996. 'A Method For Assessing Hydrologic Aleration Within Ecosystems.' Conservation Biology 10(4): 1163-1174.\t";
-            statsSummaryTable[167][0] = "B.D. Richter; J.V. Baumgartner; R. Wigington; D.P Braun. 1997. 'How Much Water Does A River Need?' Freshwater Biology. 37: 231-249.\t";
-            statsSummaryTable[168][0] = "B.D. Richter; J.V. Baumgartner; D.P. Braun; J. Powell. 1998. 'A Spatial Assessment Of Hydrologic Alteration Within A River Network.' Regul. Rivers: Res. Mgmt. 14: 329-340.";
+            statsSummaryTable[46][0] = "January (Maximum) [cfs]";
+            statsSummaryTable[47][0] = "January (Minimum) [cfs]";
+            statsSummaryTable[48][0] = "January (Upper Quartile) [cfs]";
+            statsSummaryTable[49][0] = "January (Lower Quartile) [cfs]";
+            statsSummaryTable[50][0] = "January (Median) [cfs]";
+            statsSummaryTable[51][0] = "January (Average) [cfs]";
+            statsSummaryTable[52][0] = "January (Standard Deviation) [cfs]";
+            statsSummaryTable[53][0] = "January (Variance)";
+            statsSummaryTable[54][0] = "January (Skewness)";
+            statsSummaryTable[55][0] = "January (Coefficient of Variation)";
+            statsSummaryTable[56][0] = "February (Maximum) [cfs]";
+            statsSummaryTable[57][0] = "February (Minimum) [cfs]";
+            statsSummaryTable[58][0] = "February (Upper Quartile) [cfs]";
+            statsSummaryTable[59][0] = "February (Lower Quartile) [cfs]";
+            statsSummaryTable[60][0] = "February (Median) [cfs]";
+            statsSummaryTable[61][0] = "February (Average) [cfs]";
+            statsSummaryTable[62][0] = "February (Standard Deviation) [cfs]";
+            statsSummaryTable[63][0] = "February (Variance)";
+            statsSummaryTable[64][0] = "February (Skewness)";
+            statsSummaryTable[65][0] = "February (Coefficient of Variation)";
+            statsSummaryTable[66][0] = "March (Maximum) [cfs]";
+            statsSummaryTable[67][0] = "March (Minimum) [cfs]";
+            statsSummaryTable[68][0] = "March (Upper Quartile) [cfs]";
+            statsSummaryTable[69][0] = "March (Lower Quartile) [cfs]";
+            statsSummaryTable[70][0] = "March (Median) [cfs]";
+            statsSummaryTable[71][0] = "March (Average) [cfs]";
+            statsSummaryTable[72][0] = "March (Standard Deviation) [cfs]";
+            statsSummaryTable[73][0] = "March (Variance)";
+            statsSummaryTable[74][0] = "March (Skewness)";
+            statsSummaryTable[75][0] = "March (Coefficient of Variation)";
+            statsSummaryTable[76][0] = "April (Maximum) [cfs]";
+            statsSummaryTable[77][0] = "April (Minimum) [cfs]";
+            statsSummaryTable[78][0] = "April (Upper Quartile) [cfs]";
+            statsSummaryTable[79][0] = "April (Lower Quartile) [cfs]";
+            statsSummaryTable[80][0] = "April (Median) [cfs]";
+            statsSummaryTable[81][0] = "April (Average) [cfs]";
+            statsSummaryTable[82][0] = "April (Standard Deviation) [cfs]";
+            statsSummaryTable[83][0] = "April (Variance)";
+            statsSummaryTable[84][0] = "April (Skewness)";
+            statsSummaryTable[85][0] = "April (Coefficient of Variation)";
+            statsSummaryTable[86][0] = "May (Maximum) [cfs]";
+            statsSummaryTable[87][0] = "May (Minimum) [cfs]";
+            statsSummaryTable[88][0] = "May (Upper Quartile) [cfs]";
+            statsSummaryTable[89][0] = "May (Lower Quartile) [cfs]";
+            statsSummaryTable[90][0] = "May (Median) [cfs]";
+            statsSummaryTable[91][0] = "May (Average) [cfs]";
+            statsSummaryTable[92][0] = "May (Standard Deviation) [cfs]";
+            statsSummaryTable[93][0] = "May (Variance)";
+            statsSummaryTable[94][0] = "May (Skewness)";
+            statsSummaryTable[95][0] = "May (Coefficient of Variation)";
+            statsSummaryTable[96][0] = "June (Maximum) [cfs]";
+            statsSummaryTable[97][0] = "June (Minimum) [cfs]";
+            statsSummaryTable[98][0] = "June (Upper Quartile) [cfs]";
+            statsSummaryTable[99][0] = "June (Lower Quartile) [cfs]";
+            statsSummaryTable[100][0] = "June (Median) [cfs]";
+            statsSummaryTable[101][0] = "June (Average) [cfs]";
+            statsSummaryTable[102][0] = "June (Standard Deviation) [cfs]";
+            statsSummaryTable[103][0] = "June (Variance)";
+            statsSummaryTable[104][0] = "June (Skewness)";
+            statsSummaryTable[105][0] = "June (Coefficient of Variation)";
+            statsSummaryTable[106][0] = "July (Maximum) [cfs]";
+            statsSummaryTable[107][0] = "July (Minimum) [cfs]";
+            statsSummaryTable[108][0] = "July (Upper Quartile) [cfs]";
+            statsSummaryTable[109][0] = "July (Lower Quartile) [cfs]";
+            statsSummaryTable[110][0] = "July (Median) [cfs]";
+            statsSummaryTable[111][0] = "July (Average) [cfs]";
+            statsSummaryTable[112][0] = "July (Standard Deviation) [cfs]";
+            statsSummaryTable[113][0] = "July (Variance)";
+            statsSummaryTable[114][0] = "July (Skewness)";
+            statsSummaryTable[115][0] = "July (Coefficient of Variation)";
+            statsSummaryTable[116][0] = "August (Maximum) [cfs]";
+            statsSummaryTable[117][0] = "August (Minimum) [cfs]";
+            statsSummaryTable[118][0] = "August (Upper Quartile) [cfs]";
+            statsSummaryTable[119][0] = "August (Lower Quartile) [cfs]";
+            statsSummaryTable[120][0] = "August (Median) [cfs]";
+            statsSummaryTable[121][0] = "August (Average) [cfs]";
+            statsSummaryTable[122][0] = "August (Standard Deviation) [cfs]";
+            statsSummaryTable[123][0] = "August (Variance)";
+            statsSummaryTable[124][0] = "August (Skewness)";
+            statsSummaryTable[125][0] = "August (Coefficient of Variation)";
+            statsSummaryTable[126][0] = "September (Maximum) [cfs]";
+            statsSummaryTable[127][0] = "September (Minimum) [cfs]";
+            statsSummaryTable[128][0] = "September (Upper Quartile) [cfs]";
+            statsSummaryTable[129][0] = "September (Lower Quartile) [cfs]";
+            statsSummaryTable[130][0] = "September (Median) [cfs]";
+            statsSummaryTable[131][0] = "September (Average) [cfs]";
+            statsSummaryTable[132][0] = "September (Standard Deviation) [cfs]";
+            statsSummaryTable[133][0] = "September (Variance)";
+            statsSummaryTable[134][0] = "September (Skewness)";
+            statsSummaryTable[135][0] = "September (Coefficient of Variation)";
+            statsSummaryTable[136][0] = "October (Maximum) [cfs]";
+            statsSummaryTable[137][0] = "October (Minimum) [cfs]";
+            statsSummaryTable[138][0] = "October (Upper Quartile) [cfs]";
+            statsSummaryTable[139][0] = "October (Lower Quartile) [cfs]";
+            statsSummaryTable[140][0] = "October (Median) [cfs]";
+            statsSummaryTable[141][0] = "October (Average) [cfs]";
+            statsSummaryTable[142][0] = "October (Standard Deviation) [cfs]";
+            statsSummaryTable[143][0] = "October (Variance)";
+            statsSummaryTable[144][0] = "October (Skewness)";
+            statsSummaryTable[145][0] = "October (Coefficient of Variation)";
+            statsSummaryTable[146][0] = "November (Maximum) [cfs]";
+            statsSummaryTable[147][0] = "November (Minimum) [cfs]";
+            statsSummaryTable[148][0] = "November (Upper Quartile) [cfs]";
+            statsSummaryTable[149][0] = "November (Lower Quartile) [cfs]";
+            statsSummaryTable[150][0] = "November (Median) [cfs]";
+            statsSummaryTable[151][0] = "November (Average) [cfs]";
+            statsSummaryTable[152][0] = "November (Standard Deviation) [cfs]";
+            statsSummaryTable[153][0] = "November (Variance)";
+            statsSummaryTable[154][0] = "November (Skewness)";
+            statsSummaryTable[155][0] = "November (Coefficient of Variation)";
+            statsSummaryTable[156][0] = "December (Maximum) [cfs]";
+            statsSummaryTable[157][0] = "December (Minimum) [cfs]";
+            statsSummaryTable[158][0] = "December (Upper Quartile) [cfs]";
+            statsSummaryTable[159][0] = "December (Lower Quartile) [cfs]";
+            statsSummaryTable[160][0] = "December (Median) [cfs]";
+            statsSummaryTable[161][0] = "December (Average) [cfs]";
+            statsSummaryTable[162][0] = "December (Standard Deviation) [cfs]";
+            statsSummaryTable[163][0] = "December (Variance)";
+            statsSummaryTable[164][0] = "December (Skewness)";
+            statsSummaryTable[165][0] = "December (Coefficient of Variation)";
+            statsSummaryTable[166][0] = "Flow Statistics based on Indicators of Hydrologic Alteration from:";
+            statsSummaryTable[167][0] = "B.D. Richter; J.V. Baumgartner; J. Powell; D.P. Braun. 1996. 'A Method For Assessing Hydrologic Aleration Within Ecosystems.' Conservation Biology 10(4): 1163-1174.\t";
+            statsSummaryTable[168][0] = "B.D. Richter; J.V. Baumgartner; R. Wigington; D.P Braun. 1997. 'How Much Water Does A River Need?' Freshwater Biology. 37: 231-249.\t";
+            statsSummaryTable[169][0] = "B.D. Richter; J.V. Baumgartner; D.P. Braun; J. Powell. 1998. 'A Spatial Assessment Of Hydrologic Alteration Within A River Network.' Regul. Rivers: Res. Mgmt. 14: 329-340.";
         }else{
-            statsSummaryTable[45][0] = "Flow Statistics based on Indicators of Hydrologic Alteration from:";
-            statsSummaryTable[46][0] = "B.D. Richter; J.V. Baumgartner; J. Powell; D.P. Braun. 1996. 'A Method For Assessing Hydrologic Aleration Within Ecosystems.' Conservation Biology 10(4): 1163-1174.\t";
-            statsSummaryTable[47][0] = "B.D. Richter; J.V. Baumgartner; R. Wigington; D.P Braun. 1997. 'How Much Water Does A River Need?' Freshwater Biology. 37: 231-249.\t";
-            statsSummaryTable[48][0] = "B.D. Richter; J.V. Baumgartner; D.P. Braun; J. Powell. 1998. 'A Spatial Assessment Of Hydrologic Alteration Within A River Network.' Regul. Rivers: Res. Mgmt. 14: 329-340.";
+            statsSummaryTable[46][0] = "Flow Statistics based on Indicators of Hydrologic Alteration from:";
+            statsSummaryTable[47][0] = "B.D. Richter; J.V. Baumgartner; J. Powell; D.P. Braun. 1996. 'A Method For Assessing Hydrologic Aleration Within Ecosystems.' Conservation Biology 10(4): 1163-1174.\t";
+            statsSummaryTable[48][0] = "B.D. Richter; J.V. Baumgartner; R. Wigington; D.P Braun. 1997. 'How Much Water Does A River Need?' Freshwater Biology. 37: 231-249.\t";
+            statsSummaryTable[49][0] = "B.D. Richter; J.V. Baumgartner; D.P. Braun; J. Powell. 1998. 'A Spatial Assessment Of Hydrologic Alteration Within A River Network.' Regul. Rivers: Res. Mgmt. 14: 329-340.";
         }
         
         //Calculate all data statistics
@@ -510,6 +513,7 @@
         boolean increasing = false;
         int ctr_zero = 0, ctr_rises = 0, ctr_falls = 0, ctr_reversals = 0;
         String date1 = "1900-01-01";
+        double centroidSum = 0, sum = 0;
         for(int i=0; i<flowData.length; i++){
             String date2 = flowData[i][0];
             double month = Double.parseDouble(flowData[i][0].substring(5,7));
@@ -576,11 +580,24 @@
                 }
             }
             
+            //Calculate centriod values
+            double currentYear_double = Double.parseDouble(flowData[i][0].substring(0,4));
+            double currentMonth_double = Double.parseDouble(flowData[i][0].substring(5,7));
+            double currentDay_double = Double.parseDouble(flowData[i][0].substring(8));
+            int currentYear = (int) currentYear_double;
+            int currentMonth = (int) currentMonth_double;
+            int currentDay = (int) currentDay_double;
+            Calendar currentDate = new GregorianCalendar(currentYear, currentMonth - 1, currentDay);
+            int dayOfYear = currentDate.get(Calendar.DAY_OF_YEAR);
+            centroidSum = centroidSum + dayOfYear * value;
+            sum = sum + value;
+            
             //Reset yesterday's flow value
             oldValue = value;
             date1 = date2;
         }
         double mean_all = doubleMath.Average(average_1Day);
+        double centroid = centroidSum / sum;
         
         //Calculate 3-day statistics
         Object[] resultArray = getMdayData(flowData, 3);
@@ -699,8 +716,8 @@
         
         
         //Build Flow Statistics Summary for output
-        int summarySize = 49;
-        if(showMonthlyTF) summarySize = 169;
+        int summarySize = 50;
+        if(showMonthlyTF) summarySize = 170;
         String[] additionalSummary = new String[summarySize];
         additionalSummary[0] = "";//blank
         additionalSummary[1] = dataHeader;//Method
@@ -737,9 +754,10 @@
         additionalSummary[32] = String.valueOf(doubleMath.round(doubleMath.Average(lowPulses), 3));//Average Duration of Low Pulses
         additionalSummary[33] = String.valueOf(doubleMath.round(doubleMath.Average(diffPositive),3));//Average Positive Difference Between Consecutive Days
         additionalSummary[34] = String.valueOf(doubleMath.round(doubleMath.Average(diffNegative),3));//Average Negative Difference Between Consecutive Days
+        additionalSummary[35] = String.valueOf(doubleMath.round(centroid,2));//Temporal centroid of annual discharge (Julian day, not water-year day)
         
         //Add seasonal stats summary
-        int index = 35;
+        int index = 36;
         resultArray = addSimpleStatsSummary(additionalSummary, seasonal_data, index);
         additionalSummary = (String[]) resultArray[0];
         index = (int) resultArray[1];