Capture of variables in closures in Swift

func makeWallet(var sum: Int) -> (pay: Int) -> Int {
    return { pay in
        sum -= pay
        return sum
    }
}

let payFromWallet1 = makeWallet(1000)
let payFromWallet2 = makeWallet(500)
var balance = payFromWallet1(pay: 50)
//balance is 950

balance = payFromWallet2(pay: 70)
//balance is 430

balance = payFromWallet1(pay: 150)
//balance is 800