func populateDataFor(timestamp int64, frame int32, symbol string, results []entities.ResultData, result *entities.ResultResponse) error { l := len(_rates) addExtendedData := false if _rates[l-1].ID > timestamp { addExtendedData = true frame++ } result.Data = make([]float32, frame) result.Time = make([]int64, frame) var counter int32 = 1 var prevRate entities.Rate for i := l - 1; i > 0 && counter <= frame; i-- { if _rates[i].ID <= timestamp { if addExtendedData { value, err := prevRate.GetForSymbol(symbol) if err != nil { return fmt.Errorf("ExtrudeDataFor error: %v", err) } result.Data[frame-counter] = value result.Time[frame-counter] = prevRate.ID counter++ addExtendedData = false } value, err := _rates[i].GetForSymbol(symbol) if err != nil { return fmt.Errorf("ExtrudeDataFor error: %v", err) } result.Data[frame-counter] = value result.Time[frame-counter] = _rates[i].ID counter++ } prevRate = _rates[i] } return nil }