@@ -102,12 +102,20 @@ function calc(gd, trace) {
102102 } ;
103103 }
104104
105+ if ( ! gd . _fullLayout . _roundFnOpts ) gd . _fullLayout . _roundFnOpts = { } ;
106+ var groupName = trace [ '_' + mainData + 'bingroup' ] ;
107+ var roundFnOpts = { leftGap : Infinity , rightGap : Infinity } ;
108+ if ( groupName ) {
109+ if ( ! gd . _fullLayout . _roundFnOpts [ groupName ] ) gd . _fullLayout . _roundFnOpts [ groupName ] = roundFnOpts ;
110+ roundFnOpts = gd . _fullLayout . _roundFnOpts [ groupName ] ;
111+ }
112+
105113 // bin the data
106114 // and make histogram-specific pt-number-to-cd-index map object
107115 var nMax = size . length ;
108116 var uniqueValsPerBin = true ;
109- var leftGap = Infinity ;
110- var rightGap = Infinity ;
117+ var leftGap = roundFnOpts . leftGap ;
118+ var rightGap = roundFnOpts . rightGap ;
111119 var ptNumber2cdIndex = { } ;
112120 for ( i = 0 ; i < pos0 . length ; i ++ ) {
113121 var posi = pos0 [ i ] ;
@@ -124,10 +132,17 @@ function calc(gd, trace) {
124132 rightGap = Math . min ( rightGap , binEdges [ n + 1 ] - posi ) ;
125133 }
126134 }
135+ roundFnOpts . leftGap = leftGap ;
136+ roundFnOpts . rightGap = rightGap ;
127137
128138 var roundFn ;
129139 if ( ! uniqueValsPerBin ) {
130- roundFn = getBinSpanLabelRound ( leftGap , rightGap , binEdges , pa , calendar ) ;
140+ roundFn = function ( v , isRightEdge ) {
141+ return function ( ) {
142+ var roundFnOpts = gd . _fullLayout . _roundFnOpts [ groupName ] ;
143+ return getBinSpanLabelRound ( roundFnOpts . leftGap , roundFnOpts . rightGap , binEdges , pa , calendar ) ( v , isRightEdge ) ;
144+ } ;
145+ } ;
131146 }
132147
133148 // average and/or normalize the data, if needed
@@ -173,6 +188,8 @@ function calc(gd, trace) {
173188 if ( uniqueValsPerBin ) {
174189 cdi . ph0 = cdi . ph1 = ( inputPoints [ i ] . length ) ? pos0 [ inputPoints [ i ] [ 0 ] ] : pos [ i ] ;
175190 } else {
191+ // Defer evaluation of ph(0|1) in crossTraceCalc
192+ trace . _computePh = true ;
176193 cdi . ph0 = roundFn ( binEdges [ i ] ) ;
177194 cdi . ph1 = roundFn ( binEdges [ i + 1 ] , true ) ;
178195 }
0 commit comments