Of course, crhodes pointed out that there were some FATAL flaws in my macros. Firstly, I managed to faff decf-if-not-negative (I used > instead of >=). secondly, it suffers from Multiple Evaluation.

(defun decrease-if-positive (base n) (if (> base 0) (- base n) base))

(defun decrease-if-not-negative (base n) (if (>= base 0) (- base n) base))

(define-modify-macro decf-if-positive (&optional (delta 1)) decrease-if-positive) (define-modify-macro decf-if-not-negative (&optional (delta 1)) decrease-if-not-negative)