Quine / Reverse Quine Write a complete program that takes a boolean or non-negative integer input. It must:


Output its own source code if the input value is falsy
Output its own source code in reverse if the input value is truthy


Your program cannot be palindromic, nor can it read its own source code by any means.

This is code golf - shortest code in bytes wins.
CJam, 17 16 bytes

{`"_~"+Wq~g#%}_~


Test it here.

A fairly straight-forward modification of the standard quine. Other solutions for 17 bytes:

{`"_~"+q~{W%}&amp;}_~
{`"_~"+q~!2*(%}_~


If I can assume that the input is only 0 or 1 (as a stand-in for a boolean, which there is no dedicated type for in CJam), I get 15 by omitting the g:

{`"_~"+Wq~#%}_~


Explanation

{`"_~"+  e# Standard generalised quine framework. Leaves the source code on the stack. 
  W      e# Push a -1.
  q~     e# Read and evaluate input.
  g      e# signum, turning truthy values into 1 (leaving 0 unchanged).
  #      e# Power. -1^0 == 1, -1^1 == -1.
  %      e# Select every Nth element: a no-op for 1 and reverses the string for -1.
}_~