After a file was uploaded for a node, any attempt to replace with another file fails because first files isn't deleted.
Need to add:

if ($op == UPFIELD_OP_PREPARE_DELETED) {
		$file->delete = TRUE;
	}

in

upapi_callback

function