CMPedometer queryPedometerData() method seems to be return wrong steps count. But I am not sure with all device. I think the reason from M7 motion coprocessor pedometer, ins't it?
Please check the log bellow:
2019-03-28T22:16:43Z | ViewController | line: 147 | Steps 00117  | startDate 2019-03-28 01:00:00 +0000 | endDate 2019-03-28 02:00:00 +0000
2019-03-28T22:16:43Z | ViewController | line: 147 | Steps 00000  | startDate 2019-03-28 05:00:00 +0000 | endDate 2019-03-28 06:00:00 +0000
Adding 10 seconds
2019-03-28T22:18:39Z | ViewController | line: 147 | Steps 00000  | startDate 2019-03-28 01:00:00 +0000 | endDate 2019-03-28 02:00:10 +0000
2019-03-28T22:18:39Z | ViewController | line: 147 | Steps 00870  | startDate 2019-03-28 05:00:00 +0000 | endDate 2019-03-28 06:00:10 +0000
And adding 12 seconds
2019-03-28T22:18:08Z | ViewController | line: 147 | Steps 00117  | startDate 2019-03-28 01:00:00 +0000 | endDate 2019-03-28 02:00:12 +0000
2019-03-28T22:18:08Z | ViewController | line: 147 | Steps 00870  | startDate 2019-03-28 05:00:00 +0000 | endDate 2019-03-28 06:00:12 +0000
My query:
pedometer.queryPedometerData(from: start, to: end) { (pedometerData, error) in
    if let error = error {
        print("error \(error.localizedDescription)")
    }
    guard let data = pedometerData else { return }
    allPedometerData.append(data)
    logger("Steps \(String(format: "%05d", data.numberOfSteps.intValue))  | startDate \(data.startDate) | endDate \(data.endDate)")
}
Something like that: CMPedometer queryPedometerData() returning 0 steps when steps exist
 
    