public DiskBlockRequest getNextRequest(List<DiskBlockRequest> queue) {
		// Next request, LOOK moves ahead until last request, and then scans back
		DiskBlockRequest nearestOver = null, firstRequest = null, aux;
		int headCylinder = DiskState.getInstance().getHeadPosition()/DiskState.getInstance().getSectors();
		int auxCylinder, nearestOverCylinder = 0, firstRequestCylinder = 0;
		
		if (queue.size() == 0) return null;
		
		Iterator<DiskBlockRequest> it = queue.iterator();
		while (it.hasNext()) {
			aux = it.next();
			auxCylinder = aux.getBid()/DiskState.getInstance().getSectors();
			
			if (auxCylinder == headCylinder) return aux;
			
			if (auxCylinder > headCylinder) {
				if (nearestOver == null) {
					nearestOver = aux;
					nearestOverCylinder = auxCylinder;
				}
				if (auxCylinder < nearestOverCylinder) { // nearest
					nearestOver = aux;
					nearestOverCylinder = auxCylinder;
				}
			} else {
				if (firstRequest == null) {
					firstRequest = aux;
					firstRequestCylinder = auxCylinder;
				}
				if (auxCylinder < firstRequestCylinder) { // first
					firstRequest = aux;
					firstRequestCylinder = auxCylinder;
				}
			}
		}
		
		// Here, no empty queue and no requests at head's cylinder 
		if (nearestOver != null) return nearestOver;
		else return firstRequest;
	}