Maybe just upgrade a button like 'call back' that act as a request (lasting for 1/3 of the initial lending time for example) sent to the Borrower:
- If the Borrower is active and refuse to such request, then the request will be voided & the lending time stay unchanged as initially agreed by both sides.
- If the Borrower is inactive and can't react to the request at all, then the Lender will have the option to call back the lended Mon after x days after sending the request (x = half of the remaining time for example, so the request cuts the remaining time in half if success)
An example: A lend a Pikachu to B for 10 days. At day 3, A want to transfer so he send the 'call back request', this request will be lasting 3 days (1/3 of the initial lending time) for the Borrower to react. If the Borrower is active and refuse to such request during the active requesting time (day 3+4+5), then the call back request is voided. If the Borrower is inactive and can't react to the call back request at all, then by the end of day 5 (deadline of the call back request), the remaining time (5 days) will be cut in half, so there're 2.5 days left (reducing 2.5 days) until the pokemon is returned
Still, there will be problem if the initial lending time is too short, maybe this call back option is only applicable to the 'long enough' lending time (x days above).