# Diagnosis
## Symptom
`fetch` returns vectors whose values differ in the last decimal places from the upserted values.
## Likely cause
Pinecone stores vectors as 32-bit floats. Values upserted as 64-bit get rounded. Small differences are expected storage behavior, not corruption.
## Confirm it
Compare magnitudes: if the difference is at the 1e-7 scale relative to the values, it is float32 rounding. If whole values are different, or signs flip, something else is wrong (wrong id mapping, double embedding, or a transform in your pipeline).
## Fix
1. Rounding-scale drift: no fix needed. If your application needs exact round-trips, keep the original vectors in your own store and use Pinecone for search only.
2. Large drift: audit the ingest pipeline for a second normalization or embedding pass, and verify id-to-vector mapping.
## Verify the fix
Fetch a sample of ids and assert max absolute difference against the source vectors is within float32 tolerance.