Es un tema de lógica que se esconde detrás del método usado: para que el método que usas funcione no deben existir discontinuidades en los códigos de las fotos. De lo contrario, sólo te devolverá aquellos cuya diferencia por su valor absoluto sea más próxima.
En otras palabras, si los diez siguientes existen, pero se borraron los diez precedentes, entonces sólo te devolverá los diez mayores.
Para que te devuelva los anteriores y posteriores debes hacer la consulta con UNION segmentando las búsquedas:
Por cierto: No uses JOIN implícito. Usa el explícito. Tiene mejor performance.