{
        info->stats.fins += 1;
 
-       SCpnt->result = result << 16 | info->scsi.SCp.Message << 8 |
-                       info->scsi.SCp.Status;
+       set_host_byte(SCpnt, result);
+       if (result == DID_OK)
+               scsi_msg_to_host_byte(SCpnt, info->scsi.SCp.Message);
+       set_status_byte(SCpnt, info->scsi.SCp.Status);
 
        fas216_log_command(info, LOG_CONNECT, SCpnt,
                "command complete, result=0x%08x", SCpnt->result);
        /*
         * If the driver detected an error, we're all done.
         */
-       if (host_byte(SCpnt->result) != DID_OK ||
-           msg_byte(SCpnt->result) != COMMAND_COMPLETE)
+       if (get_host_byte(SCpnt) != DID_OK)
                goto done;
 
        /*