diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/data-table.js b/assets/src/scripts/monitoring-location/components/hydrograph/data-table.js
index 941ed547c6f405dbc501b590e31a832793ca5222..3d7c07c5c015331ec9c29e50130edb914855a9e9 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/data-table.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/data-table.js
@@ -4,8 +4,8 @@ import {createStructuredSelector} from 'reselect';
 
 import {link} from 'ui/lib/d3-redux';
 
-import {getVisibleGroundwaterLevelsTableData} from './selectors/discrete-data';
-import {getCurrentPointData} from './selectors/drawing-data';
+import {getGroundwaterLevelsTableData} from './selectors/discrete-data';
+import {getIVTableData} from './selectors/iv-data';
 
 const TABLE_CAPTION = {
     iv: 'Instantaneous value data',
@@ -94,12 +94,12 @@ export const drawDataTables = function(elem, store) {
         .attr('id', 'iv-hydrograph-data-table-container')
         .call(link(store, drawDataTable, createStructuredSelector({
             dataKind: () => 'iv',
-            currentData: getCurrentPointData
+            currentData: getIVTableData('primary')
         })));
     elem.append('div')
         .attr('id', 'gw-hydrograph-data-table-container')
         .call(link(store, drawDataTable, createStructuredSelector({
             dataKind: () => 'gw',
-            currentData: getVisibleGroundwaterLevelsTableData
+            currentData: getGroundwaterLevelsTableData
         })));
 };
\ No newline at end of file
diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/graph-controls.js b/assets/src/scripts/monitoring-location/components/hydrograph/graph-controls.js
index df6593442531f96028e2525f33c07fdc7840d45f..aeb3d58aae882d2a8f4e99d6fa2e8e2f7d81f1cc 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/graph-controls.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/graph-controls.js
@@ -1,27 +1,27 @@
 
 import {link} from 'ui/lib/d3-redux';
 
-import {getCurrentVariableMedianStatistics} from 'ml/selectors/median-statistics-selector';
-import {getCurrentVariableTimeSeries} from 'ml/selectors/time-series-selector';
-import {Actions} from 'ml/store/instantaneous-value-time-series-state';
+import {getInputsForRetrieval} from 'ml/selectors/hydrograph-state-selector';
+
+import {getSelectedParameterCode} from 'ml/selectors/hydrograph-state-selector';
+import {getTimeRange} from 'ml/selectors/hydrograph-data-selector';
+
+import {retrieveMedianStatistics, retrievePriorYearIVData} from 'ml/store/hydrograph-data';
+import {setCompareDataVisibility, setMedianDataVisibility} from 'ml/store/hydrograph-state';
 
-import {audibleUI} from './audible';
 import {isVisible} from './selectors/time-series-data';
 
 /*
  * Create the show audible toggle, last year toggle, and median toggle for the time series graph.
  * @param {Object} elem - D3 selection
  */
-export const drawGraphControls = function(elem, store) {
+export const drawGraphControls = function(elem, store, siteno) {
 
     const graphControlDiv = elem.append('ul')
         .classed('usa-fieldset', true)
         .classed('usa-list--unstyled', true)
         .classed('graph-controls-container', true);
 
-    graphControlDiv.append('li')
-        .call(audibleUI, store);
-
     const compareControlDiv = graphControlDiv.append('li')
         .classed('usa-checkbox', true);
 
@@ -34,14 +34,15 @@ export const drawGraphControls = function(elem, store) {
         .attr('ga-event-category', 'TimeSeriesGraph')
         .attr('ga-event-action', 'toggleCompare')
         .on('click', function() {
-            store.dispatch(Actions.setIVTimeSeriesVisibility('compare', this.checked));
+            const state = store.getState();
+            const currentTimeRange = getTimeRange('current')(state);
+            store.dispatch(setCompareDataVisibility(this.checked));
+            store.dispatch(retrievePriorYearIVData(siteno, {
+                parameterCode: getSelectedParameterCode(state),
+                startTime: currentTimeRange.start,
+                endTime: currentTimeRange.end
+            }));
         })
-        // Disables the checkbox if no compare time series for the current variable
-        .call(link(store,function(elem, compareTimeSeries) {
-            const exists = Object.keys(compareTimeSeries) ?
-                Object.values(compareTimeSeries).filter(tsValues => tsValues.points.length).length > 0 : false;
-            elem.property('disabled', !exists);
-        }, getCurrentVariableTimeSeries('compare')))
         // Sets the state of the toggle
         .call(link(store,function(elem, checked) {
             elem.property('checked', checked);
@@ -64,12 +65,9 @@ export const drawGraphControls = function(elem, store) {
         .attr('ga-event-category', 'TimeSeriesGraph')
         .attr('ga-event-action', 'toggleMedian')
         .on('click', function() {
-            store.dispatch(Actions.setIVTimeSeriesVisibility('median', this.checked));
+            store.dispatch(setMedianDataVisibility(this.checked));
+            store.dispatch(retrieveMedianStatistics(siteno, getSelectedParameterCode(store.getState())));
         })
-        // Disables the checkbox if no median data for the current variable
-        .call(link(store,function(elem, medianData) {
-            elem.property('disabled', medianData === null);
-        }, getCurrentVariableMedianStatistics))
         // Sets the state of the toggle
         .call(link(store,function(elem, checked) {
             elem.property('checked', checked);
diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/index.js b/assets/src/scripts/monitoring-location/components/hydrograph/index.js
index 7ee637b1d3e4249cb028fc7b11946be32e098708..09c191d9bb1e6d2e933c468edd657db98b9915ac 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/index.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/index.js
@@ -6,40 +6,29 @@ import {DateTime} from 'luxon';
 
 import config from 'ui/config.js';
 
-
 import {drawInfoAlert} from 'd3render/alerts';
 import {drawLoadingIndicator} from 'd3render/loading-indicator';
 
-//import {isPeriodWithinAcceptableRange, isPeriodCustom} from 'ml/iv-data-utils';
-//import {renderTimeSeriesUrlParams} from 'ml/url-params';
+import {renderTimeSeriesUrlParams} from 'ml/url-params';
 
-//import {hasAnyVariables, getCurrentVariableID, getCurrentParmCd, getVariables} from 'ml/selectors/time-series-selector';
 
 import {retrieveHydrographData} from 'ml/store/hydrograph-data';
 import {retrieveHydrographParameters} from 'ml/store/hydrograph-parameters';
-import {setSelectedParameterCode} from 'ml/store/hydrograph-state';
+import {setSelectedParameterCode, setCompareDataVisibility} from 'ml/store/hydrograph-state';
 
-//import {Actions as ivTimeSeriesDataActions} from 'ml/store/instantaneous-value-time-series-data';
-//import {Actions as ivTimeSeriesStateActions} from 'ml/store/instantaneous-value-time-series-state';
-//import {Actions as statisticsDataActions} from 'ml/store/statistics-data';
-//import {Actions as timeZoneActions} from 'ml/store/time-zone';
 import {Actions as floodDataActions} from 'ml/store/flood-inundation';
 
 //import {drawDateRangeControls} from './date-controls';
-//import {drawDataTables} from './data-table';
+import {drawDataTables} from './data-table';
 //import {renderDownloadLinks} from './download-links';
 import {drawGraphBrush} from './graph-brush';
-//import {drawGraphControls} from './graph-controls';
+import {drawGraphControls} from './graph-controls';
 import {drawTimeSeriesLegend} from './legend';
 import {drawMethodPicker} from './method-picker';
 import {drawSelectionTable} from './parameters';
 import {drawTimeSeriesGraph} from './time-series-graph';
 import {drawTooltipCursorSlider} from './tooltip';
 
-//import {getLineSegmentsByParmCd} from './selectors/drawing-data';
-//import {SPARK_LINE_DIM}  from './selectors/layout';
-//import {getAvailableParameterCodes} from './selectors/parameter-data';
-//import {getTimeSeriesScalesByParmCd} from './selectors/scales';
 
 /*
  * Renders the hydrograph on the node element using the Redux store for state information. The siteno, latitude, and
@@ -84,6 +73,7 @@ export const attachToNode = function(store,
         loadCompare: compare,
         loadMedian: false
     }));
+    store.dispatch(setCompareDataVisibility(compare));
 
     // if showing the controls, fetch the parameters
     let fetchParameters;
@@ -121,15 +111,15 @@ export const attachToNode = function(store,
             /*
             nodeElem
                 .call(drawDateRangeControls, store, siteno);
-            legendControlsContainer
-                .call(drawGraphControls, store);
-
+            */
+            legendControlsContainer.call(drawGraphControls, store, siteno);
+/*
             nodeElem.select('#iv-graph-list-container')
                 .call(renderDownloadLinks, store, siteno);
-
+*/
             nodeElem.select('#iv-data-table-container')
                 .call(drawDataTables, store);
-*/
+
             // Set the parameter code explictly. We may eventually set this within the parameter selection table
             store.dispatch(setSelectedParameterCode(parameterCode));
 
@@ -137,10 +127,7 @@ export const attachToNode = function(store,
                 nodeElem.select('.select-time-series-container')
                     .call(drawSelectionTable, store, siteno);
             });
-
-            /*
             renderTimeSeriesUrlParams(store);
-            */
         }
     });
 
diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/selectors/iv-data.js b/assets/src/scripts/monitoring-location/components/hydrograph/selectors/iv-data.js
index 0215212c33b44a32e3719f526e1d73221ee68ce4..0a68caa3f82b670a425c2836892352d348de7d41 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/selectors/iv-data.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/selectors/iv-data.js
@@ -2,9 +2,13 @@ import {format} from 'd3-format';
 import memoize from 'fast-memoize';
 import isEqual from 'lodash/isEqual';
 import uniqWith from 'lodash/uniqWith';
+import {DateTime} from 'luxon';
 import {createSelector} from 'reselect';
 
-import {getIVData} from 'ml/selectors/hydrograph-data-selector';
+import config from 'ui/config';
+
+import {getIVData, getPrimaryParameter} from 'ml/selectors/hydrograph-data-selector';
+import {getSelectedIVMethodID} from 'ml/selectors/hydrograph-state-selector';
 
 const MASKED_QUALIFIERS = {
     ice: {label: 'Ice Affected', class: 'ice-affected-mask'},
@@ -23,7 +27,7 @@ const MASKED_QUALIFIERS = {
     '***': {label: 'Unavailable', class: 'unavailable-mask'}
 };
 
-const LINE_QUALIFIERS = {
+const APPROVAL_QUALIFIERS = {
     a: {label: 'Approved', class: 'approved'},
     e: {label: 'Estimated', class: 'estimated'}
 };
@@ -86,17 +90,17 @@ export const getIVDataPoints = memoize(dataKind => createSelector(
         return Object.values(ivData.values).reduce((byMethodID, methodValues) => {
             byMethodID[methodValues.method.methodID] = methodValues.points.map(point => {
                 // We will only receive one masked qualifier
-                let label = 'Default';
-                let pointClass = '';
+                let label;
+                let pointClass;
                 const pointQualifiers = point.qualifiers.map(qualifier => qualifier.toLowerCase());
                 const maskedQualifier = pointQualifiers.find(qualifier => qualifier in MASKED_QUALIFIERS);
-                const lineQualifier = pointQualifiers.find(qualifier => qualifier in LINE_QUALIFIERS);
+                const approvalQualifier = pointQualifiers.find(qualifier => qualifier in APPROVAL_QUALIFIERS);
                 if (maskedQualifier) {
                     label = MASKED_QUALIFIERS[maskedQualifier].label;
                     pointClass = MASKED_QUALIFIERS[maskedQualifier].class;
-                } else if (lineQualifier) {
-                    label = LINE_QUALIFIERS[lineQualifier].label;
-                    pointClass = LINE_QUALIFIERS[lineQualifier].class;
+                } else if (approvalQualifier) {
+                    label = APPROVAL_QUALIFIERS[approvalQualifier].label;
+                    pointClass = APPROVAL_QUALIFIERS[approvalQualifier].class;
                 } else { //default to provisional
                     label = 'Provisional';
                     pointClass = 'provisional';
@@ -105,6 +109,8 @@ export const getIVDataPoints = memoize(dataKind => createSelector(
                     value: point.value,
                     dateTime: point.dateTime,
                     isMasked: !!maskedQualifier,
+                    maskedQualifier: maskedQualifier,
+                    approvalQualifier: approvalQualifier,
                     label: label,
                     class: pointClass
                 };
@@ -115,6 +121,26 @@ export const getIVDataPoints = memoize(dataKind => createSelector(
     }
 ));
 
+export const getIVTableData = memoize(dataKind => createSelector(
+    getIVDataPoints(dataKind),
+    getPrimaryParameter,
+    getSelectedIVMethodID,
+    (ivData, parameter, selectedMethodID) => {
+        if (!ivData || !(selectedMethodID in ivData)) {
+            return [];
+        }
+        return ivData[selectedMethodID].map(point => {
+            return {
+                parameterName: parameter.name,
+                result: point.value,
+                dateTime: DateTime.fromMillis(point.dateTime).toISO({zone: config.locationTimeZone}),
+                approvals: point.approvalQualifier ? APPROVAL_QUALIFIERS[point.approvalQualifier].label : 'Provisional',
+                masks: point.isMasked ? MASKED_QUALIFIERS[point.maskedQualifier].label : ''
+            };
+        });
+    }
+));
+
 /*
  * @return Keys are ts Ids, values are  of array of objects. Each object has four properties and
  * represents a segment
diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/selectors/legend-data.js b/assets/src/scripts/monitoring-location/components/hydrograph/selectors/legend-data.js
index 688eea0411b92bf0be77041bf6514c9a4b725408..3e5f7c0d82344a2ec8636d43290c0301ec3d40d0 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/selectors/legend-data.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/selectors/legend-data.js
@@ -3,10 +3,9 @@ import {createSelector} from 'reselect';
 import {defineLineMarker, defineRectangleMarker, defineTextOnlyMarker} from 'd3render/markers';
 
 import {getWaterwatchFloodLevels, isWaterwatchVisible} from 'ml/selectors/flood-data-selector';
+import {getPrimaryMedianStatisticsData} from 'ml/selectors/hydrograph-data-selector';
 import {isCompareIVDataVisible, isMedianDataVisible} from 'ml/selectors/hydrograph-state-selector';
 
-//import {getCurrentVariableMedianMetadata} from 'ml/selectors/median-statistics-selector';
-
 import {getGroundwaterLevelsMarker} from '../discrete-data';
 
 import {getIVUniqueDataKinds, HASH_ID} from './iv-data';
@@ -30,7 +29,7 @@ const TS_LABEL = {
 const getLegendDisplay = createSelector(
     isCompareIVDataVisible,
     isMedianDataVisible,
-    () => null, //getCurrentVariableMedianMetadata,
+    getPrimaryMedianStatisticsData,
     getIVUniqueDataKinds('primary'),
     getIVUniqueDataKinds('compare'),
     isWaterwatchVisible,
@@ -55,7 +54,7 @@ const getIVMarkers = function(dataKind, uniqueIVKinds) {
         if (ivKind.isMasked) {
             maskMarkers.push(defineRectangleMarker(null, `mask ${ivKind.class}`, ivKind.label, `url(#${HASH_ID[dataKind]})`));
         } else {
-            return lineMarkers.push(defineLineMarker(null, `line-segment ${ivKind.class} ts-${dataKind}`, ivKind.label));
+            return lineMarkers.push(defineLineMarker(null, `line-segment ts-${ivKind.class} ts-${dataKind}`, ivKind.label));
         }
     });
     return [textMarker, ...lineMarkers, ...maskMarkers];
@@ -66,6 +65,9 @@ const getIVMarkers = function(dataKind, uniqueIVKinds) {
  * @return {Array of Array} - each subarray rpresents the markes for a time series median data
  */
 const getMedianMarkers = function(medianMetaData) {
+    if (!Object.keys(medianMetaData).length) {
+        return [];
+    }
     return Object.values(medianMetaData).map((stats, index) => {
         // Get the unique non-null years, in chronological order
         let years = [];
@@ -77,7 +79,7 @@ const getMedianMarkers = function(medianMetaData) {
         }
         const dateText = years.join(' - ');
 
-        const descriptionText = stats.methodDescription ? `${stats.methodDescription} ` : '';
+        const descriptionText = stats.description ? `${stats.description} ` : '';
         const classes = `median-data-series median-step median-step-${index % 6}`;
         const label = `${descriptionText}${dateText}`;
 
diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/time-series-graph.js b/assets/src/scripts/monitoring-location/components/hydrograph/time-series-graph.js
index 4b3fd417727d1bb8192ab6df0897b8ef82a4f7fc..aa226d5fa025370d5d1bce6334e674d755bdbf1a 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/time-series-graph.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/time-series-graph.js
@@ -10,13 +10,13 @@ import {appendAxes} from 'd3render/axes';
 import {renderMaskDefs} from 'd3render/data-masks';
 import {appendInfoTooltip} from 'd3render/info-tooltip';
 
-import {getPrimaryParameter} from 'ml/selectors/hydrograph-data-selector';
 import {isWaterwatchVisible, getWaterwatchFloodLevels} from 'ml/selectors/flood-data-selector';
+import {getPrimaryParameter, getPrimaryMedianStatisticsData} from 'ml/selectors/hydrograph-data-selector';
+import {getSelectedIVMethodID} from 'ml/selectors/hydrograph-state-selector';
 
 import {getAxes}  from './selectors/axes';
 import {getGroundwaterLevelPoints} from './selectors/discrete-data';
 import {getIVDataSegments, HASH_ID} from './selectors/iv-data';
-import {getSelectedIVMethodID} from 'ml/selectors/hydrograph-state-selector';
 
 import {getTitle, getDescription, isVisible} from './selectors/time-series-data';
 import {getMainLayout} from './selectors/layout';
@@ -50,10 +50,10 @@ const plotMedianPoints = function(elem, {xscale, yscale, modulo, points}) {
     const stepFunction = d3Line()
         .curve(curveStepAfter)
         .x(function(d) {
-            return xscale(d.date);
+            return xscale(d.dateTime);
         })
         .y(function(d) {
-            return yscale(d.value);
+            return yscale(d.point);
         });
     const medianGrp = elem.append('g');
     medianGrp.append('path')
@@ -75,7 +75,7 @@ const plotMedianPoints = function(elem, {xscale, yscale, modulo, points}) {
  */
 const plotAllMedianPoints = function(elem, {visible, xscale, yscale, seriesPoints, enableClip}) {
     elem.select('#median-points').remove();
-    if (!visible) {
+    if (!visible || !seriesPoints) {
         return;
     }
     const container = elem
@@ -85,8 +85,8 @@ const plotAllMedianPoints = function(elem, {visible, xscale, yscale, seriesPoint
         container.attr('clip-path', 'url(#graph-clip');
     }
 
-    seriesPoints.forEach((points, index) => {
-        plotMedianPoints(container, {xscale, yscale, modulo: index % 6, points: points});
+    Object.values(seriesPoints).forEach((series, index) => {
+        plotMedianPoints(container, {xscale, yscale, modulo: index % 6, points: series.values});
     });
 };
 
@@ -269,22 +269,21 @@ export const drawTimeSeriesGraph = function(elem, store, siteNo, agencyCode, sit
             xScale: getMainXScale('current'),
             yScale: getMainYScale,
             enableClip: () => true
-        })));
-    /*
+        })))
         .call(link(store, plotAllMedianPoints, createStructuredSelector({
             visible: isVisible('median'),
             xscale: getMainXScale('current'),
             yscale: getMainYScale,
-            seriesPoints: getCurrentVariableMedianStatPoints,
+            seriesPoints: getPrimaryMedianStatisticsData,
             enableClip: () => true
         })))
         .call(link(store, plotAllFloodLevelPoints, createStructuredSelector({
             visible: isWaterwatchVisible,
-            xscale: getBrushXScale('current'),
+            xscale: getBrushXScale,
             yscale: getMainYScale,
             seriesPoints: getWaterwatchFloodLevels
         })));
-*/
+
     if (showTooltip) {
         dataGroup.call(drawTooltipFocus, store);
     }
diff --git a/assets/src/scripts/monitoring-location/components/hydrograph/time-series-lines.js b/assets/src/scripts/monitoring-location/components/hydrograph/time-series-lines.js
index b13ca1f4319abc3351c069898a8dd61951714ea9..72fa358d7b7509bbf69d73bff4ca30d774956155 100644
--- a/assets/src/scripts/monitoring-location/components/hydrograph/time-series-lines.js
+++ b/assets/src/scripts/monitoring-location/components/hydrograph/time-series-lines.js
@@ -27,7 +27,7 @@ const drawLineSegment = function(group, {segment, isCurrentMethod, dataKind, xSc
     lineElem
         .classed('line-segment', true)
         .classed(segment.class, true)
-        .classed(dataKind, true)
+        .classed(`ts-${dataKind}`, true)
         .classed('not-current-method', !isCurrentMethod);
 };
 
@@ -84,7 +84,7 @@ export const drawDataSegment = function(group, {segment, isCurrentMethod, dataKi
  * can be styled by using the class name.
  * @param {Boolean} visible
  * @param {String} currentMethodID
- * @param {Array of Obect} - Each object is suitable for passing to drawDataLine
+ * @param {Array of Object} - Each object is suitable for passing to drawDataLine
  * @param {String} timeRangeKind - 'current' or 'compare'
  * @param {Object} xScale - D3 scale for the x axis
  * @param {Object} yScale - D3 scale for the y axis
diff --git a/assets/src/scripts/monitoring-location/selectors/hydrograph-data-selector.js b/assets/src/scripts/monitoring-location/selectors/hydrograph-data-selector.js
index 177836eb77072423f354154c724d176ad6f17fb6..2adfc8df1f1f91a37cf8bd9a4c9d4eee8c00ffe3 100644
--- a/assets/src/scripts/monitoring-location/selectors/hydrograph-data-selector.js
+++ b/assets/src/scripts/monitoring-location/selectors/hydrograph-data-selector.js
@@ -88,9 +88,12 @@ export const getPrimaryMedianStatisticsData = createSelector(
 
         let result = {};
         Object.values(stats).forEach(statsForTsId => {
-            result[statsForTsId[0].ts_id] = {
+            const tsID = statsForTsId[0].ts_id;
+            result[tsID] = {
                 values: [],
-                description: statsForTsId[0].loc_web_ds
+                description: statsForTsId[0].loc_web_ds,
+                beginYear: statsForTsId[0].begin_yr,
+                endYear: statsForTsId[0].end_yr
             };
             let currentDateTime = DateTime.fromMillis(timeRange.start, {zone: config.locationTimeZone});
 
@@ -98,15 +101,17 @@ export const getPrimaryMedianStatisticsData = createSelector(
                 const thisStatsData = find(statsForTsId, (stat) => {
                     return stat.month_nu === currentDateTime.month && stat.day_nu === currentDateTime.day;
                 });
-                result.values.push({
-                    point: thisStatsData.p50_va,
-                    dateTime: currentDateTime
-                });
-                currentDateTime.plus({days: 1}).startOf();
+                if (thisStatsData) {
+                    result[tsID].values.push({
+                        point: thisStatsData.p50_va,
+                        dateTime: currentDateTime.toMillis()
+                    });
+                }
+                currentDateTime = currentDateTime.plus({days: 1}).startOf('day');
             }
-            result.values.push({
-                point: result.values[result.values.length - 1].point,
-                dateTime: DateTime.fromMillis(timeRange.end, {zone: config.locationTimeZone})
+            result[tsID].values.push({
+                point: result[tsID].values[result[tsID].values.length - 1].point,
+                dateTime: timeRange.end
             });
         });
         return result;
diff --git a/assets/src/scripts/monitoring-location/store/hydrograph-data.js b/assets/src/scripts/monitoring-location/store/hydrograph-data.js
index f5b31f8528814e3082a65cc154f3dfcb52697094..848b2265e390734e4561d5cc4a0667fdaa1603b7 100644
--- a/assets/src/scripts/monitoring-location/store/hydrograph-data.js
+++ b/assets/src/scripts/monitoring-location/store/hydrograph-data.js
@@ -89,7 +89,7 @@ const addGroundwaterLevels = function(gwLevels) {
  * @param {String} parameterCode
  * @param {String} period - ISO 8601 duration
  * @param {String} startTime - ISO 8601 time string
- * @param {String} endTie - ISO 8601 time string
+ * @param {String} endTime - ISO 8601 time string
  * @return {Function} that returns a Promise
  */
 const retrieveIVData = function(siteno, dataKind, {parameterCode, period, startTime, endTime}) {
@@ -152,14 +152,14 @@ const retrieveIVData = function(siteno, dataKind, {parameterCode, period, startT
  * Asynchronous Redux action to fetch the IV data for siteno, parameterCode and startTime/endTime
  * @param {String} siteno
  * @param {String} parameterCode
- * @param {String} startTime - ISO 8601 time string
- * @param {String} endTime - ISO 8601 time string
+ * @param {String} startTime - Epoch time
+ * @param {String} endTime - EpochTime
  * @return {Function} that returns a Promise
  */
 export const retrievePriorYearIVData = function(siteno, {parameterCode, startTime, endTime}) {
     return function(dispatch, getState) {
-        const priorYearStartTime = DateTime.fromISO(startTime).minus({days: 365}).toMillis();
-        const priorYearEndTime = DateTime.fromISO(endTime).minus({days: 365}).toMillis();
+        const priorYearStartTime = DateTime.fromMillis(startTime).minus({days: 365}).toMillis();
+        const priorYearEndTime = DateTime.fromMillis(endTime).minus({days: 365}).toMillis();
         const currentPriorYearTimeRange = getState().hydrographData.compareTimeRange || null;
         if (currentPriorYearTimeRange && priorYearStartTime === currentPriorYearTimeRange.start &&
             priorYearEndTime === currentPriorYearTimeRange.end) {
@@ -191,18 +191,18 @@ export const retrieveMedianStatistics = function(siteno, parameterCode) {
             return fetchSiteStatistics({siteno: siteno, statType: 'median', params: [parameterToFetch]})
                 .then(stats => {
                     let resultStats = {};
-                    if (isCalculatedParameterCode) {
+                    if (parameterToFetch in stats) {
                         Object.keys(stats[parameterToFetch]).forEach(methodID => {
                             resultStats[methodID] = stats[parameterToFetch][methodID].map(stat => {
+                                const p50Va = isCalculatedParameterCode ? convertCelsiusToFahrenheit(stat.p50_va) : parseFloat(stat.p50_va);
                                 return {
                                     ...stat,
-                                    parameter_cd: parameterCode,
-                                    p50_va: convertCelsiusToFahrenheit(stat.p50_va)
+                                    month_nu: parseInt(stat.month_nu),
+                                    day_nu: parseInt(stat.day_nu),
+                                    p50_va: p50Va
                                 };
                             });
                         });
-                    } else {
-                        resultStats = stats[parameterToFetch];
                     }
                     dispatch(addMedianStatisticsData(resultStats));
                 });
@@ -303,8 +303,8 @@ export const retrieveHydrographData = function(siteno, {parameterCode, period, s
             fetchPromises.push(dispatch(
                 retrievePriorYearIVData(siteno, {
                     parameterCode: parameterCode,
-                    startTime: DateTime.fromMillis(timeRange.start).toISO(),
-                    endTime: DateTime.fromMillis(timeRange.end).toISO()
+                    startTime: timeRange.start,
+                    endTime: timeRange.end
                 })));
         }
         if (hasIVData && loadMedian) {