long findRecordStart(long pos) {
		try {
			raf.seek(pos);

			int len = 0;
			for (long p = pos; (len = raf.read(buffer)) > 0; p += len) {
				for (int idx = 0; idx >= 0;) {
					// Find '\n@' in this buffer
					idx = findNl(buffer, idx);
					if (idx >= 0) {
						idx++;
						if ((idx < buffer.length) && (buffer[idx] == '@')) {
							// Is there a '@\n'? => This is probably a record start
							// Note: It may be a quality line that has the first base quality of 31 (i.e. '@' in phred-33 coding) 
							if (isRecordStart(buffer, idx)) {
								long recordStart = p + idx;
								return recordStart;
							}
						}
					}
				}
			}
		} catch (IOException e) {
			throw new RuntimeException(e);
		}

		return -1;
	}